--- a/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
41bd0a702bc8ec6feebd725a63e7c3227f82ab11 jdk7-b43
5843778bda89b1d5ac8e1aa05e26930ac90b3145 jdk7-b44
54dffad0bf066791a2793305875250c395011d5f jdk7-b45
+04b2620edc72de93671646e4720c5992c74ac8b5 jdk7-b46
+0c4657194eec95c08ba478aee9cfc3c295e41657 jdk7-b47
--- a/.hgtags-top-repo Sun Feb 22 17:21:13 2009 -0800
+++ b/.hgtags-top-repo Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
848e684279d2ba42577d9621d5b2e5af3823d12d jdk7-b43
a395e3aac4744cc9033fcd819fad1239a45add52 jdk7-b44
99846f001ca214015578d593802d26e27246a802 jdk7-b45
+e8a2a4d187773a62f3309b0fa265c13425bc2258 jdk7-b46
+d7744e86dedc21a8ecf6bdb73eb191b8eaf5b0da jdk7-b47
--- a/corba/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/corba/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
9cd740d48a4855321d69f137a7109c00bcda76be jdk7-b43
9803dac7254041b30ca65e3852d4c566b9757c3b jdk7-b44
68814aa5b44b1f16931a97e7cd4028c70eb9586b jdk7-b45
+1691dbfc08f8ee3f4e23a1ff30cdff920718696c jdk7-b46
+167ad0164301f318b069a947e1c9c07ed667748a jdk7-b47
--- a/hotspot/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
fc6a5ae3fef5ebacfa896dbb3ae37715e388e282 jdk7-b43
809e899c638bd9b21836abf9d09ab2a30ff3900b jdk7-b44
945bf754069766e76873c53102fae48abf04cf5b jdk7-b45
+16bb38eeda35b46268eefa4c1f829eb086e0ca46 jdk7-b46
+fcb923bad68e2b10380a030ea83a723f4dc3d4d6 jdk7-b47
--- a/hotspot/make/hotspot_version Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/make/hotspot_version Thu Feb 26 14:25:55 2009 -0800
@@ -35,7 +35,7 @@
HS_MAJOR_VER=15
HS_MINOR_VER=0
-HS_BUILD_NUMBER=01
+HS_BUILD_NUMBER=02
JDK_MAJOR_VER=1
JDK_MINOR_VER=7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,514 @@
+/*
+ * Copyright 1997-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.
+ *
+ * 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 "incls/_precompiled.incl"
+# include "incls/_vm_version_x86.cpp.incl"
+
+
+int VM_Version::_cpu;
+int VM_Version::_model;
+int VM_Version::_stepping;
+int VM_Version::_cpuFeatures;
+const char* VM_Version::_features_str = "";
+VM_Version::CpuidInfo VM_Version::_cpuid_info = { 0, };
+
+static BufferBlob* stub_blob;
+static const int stub_size = 300;
+
+extern "C" {
+ typedef void (*getPsrInfo_stub_t)(void*);
+}
+static getPsrInfo_stub_t getPsrInfo_stub = NULL;
+
+
+class VM_Version_StubGenerator: public StubCodeGenerator {
+ public:
+
+ VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
+
+ address generate_getPsrInfo() {
+ // Flags to test CPU type.
+ const uint32_t EFL_AC = 0x40000;
+ const uint32_t EFL_ID = 0x200000;
+ // Values for when we don't have a CPUID instruction.
+ const int CPU_FAMILY_SHIFT = 8;
+ const uint32_t CPU_FAMILY_386 = (3 << CPU_FAMILY_SHIFT);
+ const uint32_t CPU_FAMILY_486 = (4 << CPU_FAMILY_SHIFT);
+
+ Label detect_486, cpu486, detect_586, std_cpuid1;
+ Label ext_cpuid1, ext_cpuid5, done;
+
+ StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
+# define __ _masm->
+
+ address start = __ pc();
+
+ //
+ // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
+ //
+ // LP64: rcx and rdx are first and second argument registers on windows
+
+ __ push(rbp);
+#ifdef _LP64
+ __ mov(rbp, c_rarg0); // cpuid_info address
+#else
+ __ movptr(rbp, Address(rsp, 8)); // cpuid_info address
+#endif
+ __ push(rbx);
+ __ push(rsi);
+ __ pushf(); // preserve rbx, and flags
+ __ pop(rax);
+ __ push(rax);
+ __ mov(rcx, rax);
+ //
+ // if we are unable to change the AC flag, we have a 386
+ //
+ __ xorl(rax, EFL_AC);
+ __ push(rax);
+ __ popf();
+ __ pushf();
+ __ pop(rax);
+ __ cmpptr(rax, rcx);
+ __ jccb(Assembler::notEqual, detect_486);
+
+ __ movl(rax, CPU_FAMILY_386);
+ __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
+ __ jmp(done);
+
+ //
+ // If we are unable to change the ID flag, we have a 486 which does
+ // not support the "cpuid" instruction.
+ //
+ __ bind(detect_486);
+ __ mov(rax, rcx);
+ __ xorl(rax, EFL_ID);
+ __ push(rax);
+ __ popf();
+ __ pushf();
+ __ pop(rax);
+ __ cmpptr(rcx, rax);
+ __ jccb(Assembler::notEqual, detect_586);
+
+ __ bind(cpu486);
+ __ movl(rax, CPU_FAMILY_486);
+ __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
+ __ jmp(done);
+
+ //
+ // At this point, we have a chip which supports the "cpuid" instruction
+ //
+ __ bind(detect_586);
+ __ xorl(rax, rax);
+ __ cpuid();
+ __ orl(rax, rax);
+ __ jcc(Assembler::equal, cpu486); // if cpuid doesn't support an input
+ // value of at least 1, we give up and
+ // assume a 486
+ __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid0_offset())));
+ __ movl(Address(rsi, 0), rax);
+ __ movl(Address(rsi, 4), rbx);
+ __ movl(Address(rsi, 8), rcx);
+ __ movl(Address(rsi,12), rdx);
+
+ __ cmpl(rax, 3); // Is cpuid(0x4) supported?
+ __ jccb(Assembler::belowEqual, std_cpuid1);
+
+ //
+ // cpuid(0x4) Deterministic cache params
+ //
+ __ movl(rax, 4);
+ __ xorl(rcx, rcx); // L1 cache
+ __ cpuid();
+ __ push(rax);
+ __ andl(rax, 0x1f); // Determine if valid cache parameters used
+ __ orl(rax, rax); // eax[4:0] == 0 indicates invalid cache
+ __ pop(rax);
+ __ jccb(Assembler::equal, std_cpuid1);
+
+ __ lea(rsi, Address(rbp, in_bytes(VM_Version::dcp_cpuid4_offset())));
+ __ movl(Address(rsi, 0), rax);
+ __ movl(Address(rsi, 4), rbx);
+ __ movl(Address(rsi, 8), rcx);
+ __ movl(Address(rsi,12), rdx);
+
+ //
+ // Standard cpuid(0x1)
+ //
+ __ bind(std_cpuid1);
+ __ movl(rax, 1);
+ __ cpuid();
+ __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())));
+ __ movl(Address(rsi, 0), rax);
+ __ movl(Address(rsi, 4), rbx);
+ __ movl(Address(rsi, 8), rcx);
+ __ movl(Address(rsi,12), rdx);
+
+ __ movl(rax, 0x80000000);
+ __ cpuid();
+ __ cmpl(rax, 0x80000000); // Is cpuid(0x80000001) supported?
+ __ jcc(Assembler::belowEqual, done);
+ __ cmpl(rax, 0x80000004); // Is cpuid(0x80000005) supported?
+ __ jccb(Assembler::belowEqual, ext_cpuid1);
+ __ cmpl(rax, 0x80000007); // Is cpuid(0x80000008) supported?
+ __ jccb(Assembler::belowEqual, ext_cpuid5);
+ //
+ // Extended cpuid(0x80000008)
+ //
+ __ movl(rax, 0x80000008);
+ __ cpuid();
+ __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid8_offset())));
+ __ movl(Address(rsi, 0), rax);
+ __ movl(Address(rsi, 4), rbx);
+ __ movl(Address(rsi, 8), rcx);
+ __ movl(Address(rsi,12), rdx);
+
+ //
+ // Extended cpuid(0x80000005)
+ //
+ __ bind(ext_cpuid5);
+ __ movl(rax, 0x80000005);
+ __ cpuid();
+ __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid5_offset())));
+ __ movl(Address(rsi, 0), rax);
+ __ movl(Address(rsi, 4), rbx);
+ __ movl(Address(rsi, 8), rcx);
+ __ movl(Address(rsi,12), rdx);
+
+ //
+ // Extended cpuid(0x80000001)
+ //
+ __ bind(ext_cpuid1);
+ __ movl(rax, 0x80000001);
+ __ cpuid();
+ __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid1_offset())));
+ __ movl(Address(rsi, 0), rax);
+ __ movl(Address(rsi, 4), rbx);
+ __ movl(Address(rsi, 8), rcx);
+ __ movl(Address(rsi,12), rdx);
+
+ //
+ // return
+ //
+ __ bind(done);
+ __ popf();
+ __ pop(rsi);
+ __ pop(rbx);
+ __ pop(rbp);
+ __ ret(0);
+
+# undef __
+
+ return start;
+ };
+};
+
+
+void VM_Version::get_processor_features() {
+
+ _cpu = 4; // 486 by default
+ _model = 0;
+ _stepping = 0;
+ _cpuFeatures = 0;
+ _logical_processors_per_package = 1;
+
+ if (!Use486InstrsOnly) {
+ // Get raw processor info
+ getPsrInfo_stub(&_cpuid_info);
+ assert_is_initialized();
+ _cpu = extended_cpu_family();
+ _model = extended_cpu_model();
+ _stepping = cpu_stepping();
+
+ if (cpu_family() > 4) { // it supports CPUID
+ _cpuFeatures = feature_flags();
+ // Logical processors are only available on P4s and above,
+ // and only if hyperthreading is available.
+ _logical_processors_per_package = logical_processor_count();
+ }
+ }
+
+ _supports_cx8 = supports_cmpxchg8();
+
+#ifdef _LP64
+ // OS should support SSE for x64 and hardware should support at least SSE2.
+ if (!VM_Version::supports_sse2()) {
+ vm_exit_during_initialization("Unknown x64 processor: SSE2 not supported");
+ }
+#endif
+
+ // If the OS doesn't support SSE, we can't use this feature even if the HW does
+ if (!os::supports_sse())
+ _cpuFeatures &= ~(CPU_SSE|CPU_SSE2|CPU_SSE3|CPU_SSSE3|CPU_SSE4A|CPU_SSE4_1|CPU_SSE4_2);
+
+ if (UseSSE < 4) {
+ _cpuFeatures &= ~CPU_SSE4_1;
+ _cpuFeatures &= ~CPU_SSE4_2;
+ }
+
+ if (UseSSE < 3) {
+ _cpuFeatures &= ~CPU_SSE3;
+ _cpuFeatures &= ~CPU_SSSE3;
+ _cpuFeatures &= ~CPU_SSE4A;
+ }
+
+ if (UseSSE < 2)
+ _cpuFeatures &= ~CPU_SSE2;
+
+ if (UseSSE < 1)
+ _cpuFeatures &= ~CPU_SSE;
+
+ if (logical_processors_per_package() == 1) {
+ // HT processor could be installed on a system which doesn't support HT.
+ _cpuFeatures &= ~CPU_HT;
+ }
+
+ char buf[256];
+ jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ cores_per_cpu(), threads_per_core(),
+ cpu_family(), _model, _stepping,
+ (supports_cmov() ? ", cmov" : ""),
+ (supports_cmpxchg8() ? ", cx8" : ""),
+ (supports_fxsr() ? ", fxsr" : ""),
+ (supports_mmx() ? ", mmx" : ""),
+ (supports_sse() ? ", sse" : ""),
+ (supports_sse2() ? ", sse2" : ""),
+ (supports_sse3() ? ", sse3" : ""),
+ (supports_ssse3()? ", ssse3": ""),
+ (supports_sse4_1() ? ", sse4.1" : ""),
+ (supports_sse4_2() ? ", sse4.2" : ""),
+ (supports_mmx_ext() ? ", mmxext" : ""),
+ (supports_3dnow() ? ", 3dnow" : ""),
+ (supports_3dnow2() ? ", 3dnowext" : ""),
+ (supports_sse4a() ? ", sse4a": ""),
+ (supports_ht() ? ", ht": ""));
+ _features_str = strdup(buf);
+
+ // UseSSE is set to the smaller of what hardware supports and what
+ // the command line requires. I.e., you cannot set UseSSE to 2 on
+ // older Pentiums which do not support it.
+ if( UseSSE > 4 ) UseSSE=4;
+ if( UseSSE < 0 ) UseSSE=0;
+ if( !supports_sse4_1() ) // Drop to 3 if no SSE4 support
+ UseSSE = MIN2((intx)3,UseSSE);
+ if( !supports_sse3() ) // Drop to 2 if no SSE3 support
+ UseSSE = MIN2((intx)2,UseSSE);
+ if( !supports_sse2() ) // Drop to 1 if no SSE2 support
+ UseSSE = MIN2((intx)1,UseSSE);
+ if( !supports_sse () ) // Drop to 0 if no SSE support
+ UseSSE = 0;
+
+ // On new cpus instructions which update whole XMM register should be used
+ // to prevent partial register stall due to dependencies on high half.
+ //
+ // UseXmmLoadAndClearUpper == true --> movsd(xmm, mem)
+ // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)
+ // UseXmmRegToRegMoveAll == true --> movaps(xmm, xmm), movapd(xmm, xmm).
+ // UseXmmRegToRegMoveAll == false --> movss(xmm, xmm), movsd(xmm, xmm).
+
+ if( is_amd() ) { // AMD cpus specific settings
+ if( supports_sse2() && FLAG_IS_DEFAULT(UseAddressNop) ) {
+ // Use it on new AMD cpus starting from Opteron.
+ UseAddressNop = true;
+ }
+ if( supports_sse2() && FLAG_IS_DEFAULT(UseNewLongLShift) ) {
+ // Use it on new AMD cpus starting from Opteron.
+ UseNewLongLShift = true;
+ }
+ if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
+ if( supports_sse4a() ) {
+ UseXmmLoadAndClearUpper = true; // use movsd only on '10h' Opteron
+ } else {
+ UseXmmLoadAndClearUpper = false;
+ }
+ }
+ if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
+ if( supports_sse4a() ) {
+ UseXmmRegToRegMoveAll = true; // use movaps, movapd only on '10h'
+ } else {
+ UseXmmRegToRegMoveAll = false;
+ }
+ }
+ if( FLAG_IS_DEFAULT(UseXmmI2F) ) {
+ if( supports_sse4a() ) {
+ UseXmmI2F = true;
+ } else {
+ UseXmmI2F = false;
+ }
+ }
+ if( FLAG_IS_DEFAULT(UseXmmI2D) ) {
+ if( supports_sse4a() ) {
+ UseXmmI2D = true;
+ } else {
+ UseXmmI2D = false;
+ }
+ }
+ }
+
+ if( is_intel() ) { // Intel cpus specific settings
+ if( FLAG_IS_DEFAULT(UseStoreImmI16) ) {
+ UseStoreImmI16 = false; // don't use it on Intel cpus
+ }
+ if( cpu_family() == 6 || cpu_family() == 15 ) {
+ if( FLAG_IS_DEFAULT(UseAddressNop) ) {
+ // Use it on all Intel cpus starting from PentiumPro
+ UseAddressNop = true;
+ }
+ }
+ if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
+ UseXmmLoadAndClearUpper = true; // use movsd on all Intel cpus
+ }
+ if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
+ if( supports_sse3() ) {
+ UseXmmRegToRegMoveAll = true; // use movaps, movapd on new Intel cpus
+ } else {
+ UseXmmRegToRegMoveAll = false;
+ }
+ }
+ if( cpu_family() == 6 && supports_sse3() ) { // New Intel cpus
+#ifdef COMPILER2
+ if( FLAG_IS_DEFAULT(MaxLoopPad) ) {
+ // For new Intel cpus do the next optimization:
+ // don't align the beginning of a loop if there are enough instructions
+ // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
+ // in current fetch line (OptoLoopAlignment) or the padding
+ // is big (> MaxLoopPad).
+ // Set MaxLoopPad to 11 for new Intel cpus to reduce number of
+ // generated NOP instructions. 11 is the largest size of one
+ // address NOP instruction '0F 1F' (see Assembler::nop(i)).
+ MaxLoopPad = 11;
+ }
+#endif // COMPILER2
+ if( FLAG_IS_DEFAULT(UseXMMForArrayCopy) ) {
+ UseXMMForArrayCopy = true; // use SSE2 movq on new Intel cpus
+ }
+ if( supports_sse4_2() && supports_ht() ) { // Newest Intel cpus
+ if( FLAG_IS_DEFAULT(UseUnalignedLoadStores) && UseXMMForArrayCopy ) {
+ UseUnalignedLoadStores = true; // use movdqu on newest Intel cpus
+ }
+ }
+ }
+ }
+
+ assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
+ assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
+
+ // set valid Prefetch instruction
+ if( ReadPrefetchInstr < 0 ) ReadPrefetchInstr = 0;
+ if( ReadPrefetchInstr > 3 ) ReadPrefetchInstr = 3;
+ if( ReadPrefetchInstr == 3 && !supports_3dnow() ) ReadPrefetchInstr = 0;
+ if( !supports_sse() && supports_3dnow() ) ReadPrefetchInstr = 3;
+
+ if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
+ if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3;
+ if( AllocatePrefetchInstr == 3 && !supports_3dnow() ) AllocatePrefetchInstr=0;
+ if( !supports_sse() && supports_3dnow() ) AllocatePrefetchInstr = 3;
+
+ // Allocation prefetch settings
+ intx cache_line_size = L1_data_cache_line_size();
+ if( cache_line_size > AllocatePrefetchStepSize )
+ AllocatePrefetchStepSize = cache_line_size;
+ if( FLAG_IS_DEFAULT(AllocatePrefetchLines) )
+ AllocatePrefetchLines = 3; // Optimistic value
+ assert(AllocatePrefetchLines > 0, "invalid value");
+ if( AllocatePrefetchLines < 1 ) // set valid value in product VM
+ AllocatePrefetchLines = 1; // Conservative value
+
+ AllocatePrefetchDistance = allocate_prefetch_distance();
+ AllocatePrefetchStyle = allocate_prefetch_style();
+
+ if( AllocatePrefetchStyle == 2 && is_intel() &&
+ cpu_family() == 6 && supports_sse3() ) { // watermark prefetching on Core
+#ifdef _LP64
+ AllocatePrefetchDistance = 384;
+#else
+ AllocatePrefetchDistance = 320;
+#endif
+ }
+ assert(AllocatePrefetchDistance % AllocatePrefetchStepSize == 0, "invalid value");
+
+#ifdef _LP64
+ // Prefetch settings
+ PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
+ PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes();
+ PrefetchFieldsAhead = prefetch_fields_ahead();
+#endif
+
+#ifndef PRODUCT
+ if (PrintMiscellaneous && Verbose) {
+ tty->print_cr("Logical CPUs per core: %u",
+ logical_processors_per_package());
+ tty->print_cr("UseSSE=%d",UseSSE);
+ tty->print("Allocation: ");
+ if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow()) {
+ tty->print_cr("no prefetching");
+ } else {
+ if (UseSSE == 0 && supports_3dnow()) {
+ tty->print("PREFETCHW");
+ } else if (UseSSE >= 1) {
+ if (AllocatePrefetchInstr == 0) {
+ tty->print("PREFETCHNTA");
+ } else if (AllocatePrefetchInstr == 1) {
+ tty->print("PREFETCHT0");
+ } else if (AllocatePrefetchInstr == 2) {
+ tty->print("PREFETCHT2");
+ } else if (AllocatePrefetchInstr == 3) {
+ tty->print("PREFETCHW");
+ }
+ }
+ if (AllocatePrefetchLines > 1) {
+ tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
+ } else {
+ tty->print_cr(" %d, one line", AllocatePrefetchDistance);
+ }
+ }
+
+ if (PrefetchCopyIntervalInBytes > 0) {
+ tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes);
+ }
+ if (PrefetchScanIntervalInBytes > 0) {
+ tty->print_cr("PrefetchScanIntervalInBytes %d", PrefetchScanIntervalInBytes);
+ }
+ if (PrefetchFieldsAhead > 0) {
+ tty->print_cr("PrefetchFieldsAhead %d", PrefetchFieldsAhead);
+ }
+ }
+#endif // !PRODUCT
+}
+
+void VM_Version::initialize() {
+ ResourceMark rm;
+ // Making this stub must be FIRST use of assembler
+
+ stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
+ if (stub_blob == NULL) {
+ vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
+ }
+ CodeBuffer c(stub_blob->instructions_begin(),
+ stub_blob->instructions_size());
+ VM_Version_StubGenerator g(&c);
+ getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
+ g.generate_getPsrInfo());
+
+ get_processor_features();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,459 @@
+/*
+ * Copyright 1997-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.
+ *
+ * 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.
+ *
+ */
+
+class VM_Version : public Abstract_VM_Version {
+public:
+ // cpuid result register layouts. These are all unions of a uint32_t
+ // (in case anyone wants access to the register as a whole) and a bitfield.
+
+ union StdCpuid1Eax {
+ uint32_t value;
+ struct {
+ uint32_t stepping : 4,
+ model : 4,
+ family : 4,
+ proc_type : 2,
+ : 2,
+ ext_model : 4,
+ ext_family : 8,
+ : 4;
+ } bits;
+ };
+
+ union StdCpuid1Ebx { // example, unused
+ uint32_t value;
+ struct {
+ uint32_t brand_id : 8,
+ clflush_size : 8,
+ threads_per_cpu : 8,
+ apic_id : 8;
+ } bits;
+ };
+
+ union StdCpuid1Ecx {
+ uint32_t value;
+ struct {
+ uint32_t sse3 : 1,
+ : 2,
+ monitor : 1,
+ : 1,
+ vmx : 1,
+ : 1,
+ est : 1,
+ : 1,
+ ssse3 : 1,
+ cid : 1,
+ : 2,
+ cmpxchg16: 1,
+ : 4,
+ dca : 1,
+ sse4_1 : 1,
+ sse4_2 : 1,
+ : 11;
+ } bits;
+ };
+
+ union StdCpuid1Edx {
+ uint32_t value;
+ struct {
+ uint32_t : 4,
+ tsc : 1,
+ : 3,
+ cmpxchg8 : 1,
+ : 6,
+ cmov : 1,
+ : 7,
+ mmx : 1,
+ fxsr : 1,
+ sse : 1,
+ sse2 : 1,
+ : 1,
+ ht : 1,
+ : 3;
+ } bits;
+ };
+
+ union DcpCpuid4Eax {
+ uint32_t value;
+ struct {
+ uint32_t cache_type : 5,
+ : 21,
+ cores_per_cpu : 6;
+ } bits;
+ };
+
+ union DcpCpuid4Ebx {
+ uint32_t value;
+ struct {
+ uint32_t L1_line_size : 12,
+ partitions : 10,
+ associativity : 10;
+ } bits;
+ };
+
+ union ExtCpuid1Ecx {
+ uint32_t value;
+ struct {
+ uint32_t LahfSahf : 1,
+ CmpLegacy : 1,
+ : 4,
+ abm : 1,
+ sse4a : 1,
+ misalignsse : 1,
+ prefetchw : 1,
+ : 22;
+ } bits;
+ };
+
+ union ExtCpuid1Edx {
+ uint32_t value;
+ struct {
+ uint32_t : 22,
+ mmx_amd : 1,
+ mmx : 1,
+ fxsr : 1,
+ : 4,
+ long_mode : 1,
+ tdnow2 : 1,
+ tdnow : 1;
+ } bits;
+ };
+
+ union ExtCpuid5Ex {
+ uint32_t value;
+ struct {
+ uint32_t L1_line_size : 8,
+ L1_tag_lines : 8,
+ L1_assoc : 8,
+ L1_size : 8;
+ } bits;
+ };
+
+ union ExtCpuid8Ecx {
+ uint32_t value;
+ struct {
+ uint32_t cores_per_cpu : 8,
+ : 24;
+ } bits;
+ };
+
+protected:
+ static int _cpu;
+ static int _model;
+ static int _stepping;
+ static int _cpuFeatures; // features returned by the "cpuid" instruction
+ // 0 if this instruction is not available
+ static const char* _features_str;
+
+ enum {
+ CPU_CX8 = (1 << 0), // next bits are from cpuid 1 (EDX)
+ CPU_CMOV = (1 << 1),
+ CPU_FXSR = (1 << 2),
+ CPU_HT = (1 << 3),
+ CPU_MMX = (1 << 4),
+ CPU_3DNOW = (1 << 5), // 3DNow comes from cpuid 0x80000001 (EDX)
+ CPU_SSE = (1 << 6),
+ CPU_SSE2 = (1 << 7),
+ CPU_SSE3 = (1 << 8), // SSE3 comes from cpuid 1 (ECX)
+ CPU_SSSE3 = (1 << 9),
+ CPU_SSE4A = (1 << 10),
+ CPU_SSE4_1 = (1 << 11),
+ CPU_SSE4_2 = (1 << 12)
+ } cpuFeatureFlags;
+
+ // cpuid information block. All info derived from executing cpuid with
+ // various function numbers is stored here. Intel and AMD info is
+ // merged in this block: accessor methods disentangle it.
+ //
+ // The info block is laid out in subblocks of 4 dwords corresponding to
+ // eax, ebx, ecx and edx, whether or not they contain anything useful.
+ struct CpuidInfo {
+ // cpuid function 0
+ uint32_t std_max_function;
+ uint32_t std_vendor_name_0;
+ uint32_t std_vendor_name_1;
+ uint32_t std_vendor_name_2;
+
+ // cpuid function 1
+ StdCpuid1Eax std_cpuid1_eax;
+ StdCpuid1Ebx std_cpuid1_ebx;
+ StdCpuid1Ecx std_cpuid1_ecx;
+ StdCpuid1Edx std_cpuid1_edx;
+
+ // cpuid function 4 (deterministic cache parameters)
+ DcpCpuid4Eax dcp_cpuid4_eax;
+ DcpCpuid4Ebx dcp_cpuid4_ebx;
+ uint32_t dcp_cpuid4_ecx; // unused currently
+ uint32_t dcp_cpuid4_edx; // unused currently
+
+ // cpuid function 0x80000000 // example, unused
+ uint32_t ext_max_function;
+ uint32_t ext_vendor_name_0;
+ uint32_t ext_vendor_name_1;
+ uint32_t ext_vendor_name_2;
+
+ // cpuid function 0x80000001
+ uint32_t ext_cpuid1_eax; // reserved
+ uint32_t ext_cpuid1_ebx; // reserved
+ ExtCpuid1Ecx ext_cpuid1_ecx;
+ ExtCpuid1Edx ext_cpuid1_edx;
+
+ // cpuid functions 0x80000002 thru 0x80000004: example, unused
+ uint32_t proc_name_0, proc_name_1, proc_name_2, proc_name_3;
+ uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
+ uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
+
+ // cpuid function 0x80000005 //AMD L1, Intel reserved
+ uint32_t ext_cpuid5_eax; // unused currently
+ uint32_t ext_cpuid5_ebx; // reserved
+ ExtCpuid5Ex ext_cpuid5_ecx; // L1 data cache info (AMD)
+ ExtCpuid5Ex ext_cpuid5_edx; // L1 instruction cache info (AMD)
+
+ // cpuid function 0x80000008
+ uint32_t ext_cpuid8_eax; // unused currently
+ uint32_t ext_cpuid8_ebx; // reserved
+ ExtCpuid8Ecx ext_cpuid8_ecx;
+ uint32_t ext_cpuid8_edx; // reserved
+ };
+
+ // The actual cpuid info block
+ static CpuidInfo _cpuid_info;
+
+ // Extractors and predicates
+ static uint32_t extended_cpu_family() {
+ uint32_t result = _cpuid_info.std_cpuid1_eax.bits.family;
+ result += _cpuid_info.std_cpuid1_eax.bits.ext_family;
+ return result;
+ }
+ static uint32_t extended_cpu_model() {
+ uint32_t result = _cpuid_info.std_cpuid1_eax.bits.model;
+ result |= _cpuid_info.std_cpuid1_eax.bits.ext_model << 4;
+ return result;
+ }
+ static uint32_t cpu_stepping() {
+ uint32_t result = _cpuid_info.std_cpuid1_eax.bits.stepping;
+ return result;
+ }
+ static uint logical_processor_count() {
+ uint result = threads_per_core();
+ return result;
+ }
+ static uint32_t feature_flags() {
+ uint32_t result = 0;
+ if (_cpuid_info.std_cpuid1_edx.bits.cmpxchg8 != 0)
+ result |= CPU_CX8;
+ if (_cpuid_info.std_cpuid1_edx.bits.cmov != 0)
+ result |= CPU_CMOV;
+ if (_cpuid_info.std_cpuid1_edx.bits.fxsr != 0 || is_amd() &&
+ _cpuid_info.ext_cpuid1_edx.bits.fxsr != 0)
+ result |= CPU_FXSR;
+ // HT flag is set for multi-core processors also.
+ if (threads_per_core() > 1)
+ result |= CPU_HT;
+ if (_cpuid_info.std_cpuid1_edx.bits.mmx != 0 || is_amd() &&
+ _cpuid_info.ext_cpuid1_edx.bits.mmx != 0)
+ result |= CPU_MMX;
+ if (is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow != 0)
+ result |= CPU_3DNOW;
+ if (_cpuid_info.std_cpuid1_edx.bits.sse != 0)
+ result |= CPU_SSE;
+ if (_cpuid_info.std_cpuid1_edx.bits.sse2 != 0)
+ result |= CPU_SSE2;
+ if (_cpuid_info.std_cpuid1_ecx.bits.sse3 != 0)
+ result |= CPU_SSE3;
+ if (_cpuid_info.std_cpuid1_ecx.bits.ssse3 != 0)
+ result |= CPU_SSSE3;
+ if (is_amd() && _cpuid_info.ext_cpuid1_ecx.bits.sse4a != 0)
+ result |= CPU_SSE4A;
+ if (_cpuid_info.std_cpuid1_ecx.bits.sse4_1 != 0)
+ result |= CPU_SSE4_1;
+ if (_cpuid_info.std_cpuid1_ecx.bits.sse4_2 != 0)
+ result |= CPU_SSE4_2;
+ return result;
+ }
+
+ static void get_processor_features();
+
+public:
+ // Offsets for cpuid asm stub
+ static ByteSize std_cpuid0_offset() { return byte_offset_of(CpuidInfo, std_max_function); }
+ static ByteSize std_cpuid1_offset() { return byte_offset_of(CpuidInfo, std_cpuid1_eax); }
+ static ByteSize dcp_cpuid4_offset() { return byte_offset_of(CpuidInfo, dcp_cpuid4_eax); }
+ static ByteSize ext_cpuid1_offset() { return byte_offset_of(CpuidInfo, ext_cpuid1_eax); }
+ static ByteSize ext_cpuid5_offset() { return byte_offset_of(CpuidInfo, ext_cpuid5_eax); }
+ static ByteSize ext_cpuid8_offset() { return byte_offset_of(CpuidInfo, ext_cpuid8_eax); }
+
+ // Initialization
+ static void initialize();
+
+ // Asserts
+ static void assert_is_initialized() {
+ assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
+ }
+
+ //
+ // Processor family:
+ // 3 - 386
+ // 4 - 486
+ // 5 - Pentium
+ // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
+ // Pentium M, Core Solo, Core Duo, Core2 Duo
+ // family 6 model: 9, 13, 14, 15
+ // 0x0f - Pentium 4, Opteron
+ //
+ // Note: The cpu family should be used to select between
+ // instruction sequences which are valid on all Intel
+ // processors. Use the feature test functions below to
+ // determine whether a particular instruction is supported.
+ //
+ static int cpu_family() { return _cpu;}
+ static bool is_P6() { return cpu_family() >= 6; }
+
+ static bool is_amd() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
+ static bool is_intel() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
+
+ static uint cores_per_cpu() {
+ uint result = 1;
+ if (is_intel()) {
+ result = (_cpuid_info.dcp_cpuid4_eax.bits.cores_per_cpu + 1);
+ } else if (is_amd()) {
+ result = (_cpuid_info.ext_cpuid8_ecx.bits.cores_per_cpu + 1);
+ }
+ return result;
+ }
+
+ static uint threads_per_core() {
+ uint result = 1;
+ if (_cpuid_info.std_cpuid1_edx.bits.ht != 0) {
+ result = _cpuid_info.std_cpuid1_ebx.bits.threads_per_cpu /
+ cores_per_cpu();
+ }
+ return result;
+ }
+
+ static intx L1_data_cache_line_size() {
+ intx result = 0;
+ if (is_intel()) {
+ result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
+ } else if (is_amd()) {
+ result = _cpuid_info.ext_cpuid5_ecx.bits.L1_line_size;
+ }
+ if (result < 32) // not defined ?
+ result = 32; // 32 bytes by default on x86 and other x64
+ return result;
+ }
+
+ //
+ // Feature identification
+ //
+ static bool supports_cpuid() { return _cpuFeatures != 0; }
+ static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
+ static bool supports_cmov() { return (_cpuFeatures & CPU_CMOV) != 0; }
+ static bool supports_fxsr() { return (_cpuFeatures & CPU_FXSR) != 0; }
+ static bool supports_ht() { return (_cpuFeatures & CPU_HT) != 0; }
+ static bool supports_mmx() { return (_cpuFeatures & CPU_MMX) != 0; }
+ static bool supports_sse() { return (_cpuFeatures & CPU_SSE) != 0; }
+ static bool supports_sse2() { return (_cpuFeatures & CPU_SSE2) != 0; }
+ static bool supports_sse3() { return (_cpuFeatures & CPU_SSE3) != 0; }
+ static bool supports_ssse3() { return (_cpuFeatures & CPU_SSSE3)!= 0; }
+ static bool supports_sse4_1() { return (_cpuFeatures & CPU_SSE4_1) != 0; }
+ static bool supports_sse4_2() { return (_cpuFeatures & CPU_SSE4_2) != 0; }
+ //
+ // AMD features
+ //
+ static bool supports_3dnow() { return (_cpuFeatures & CPU_3DNOW) != 0; }
+ static bool supports_mmx_ext() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; }
+ static bool supports_3dnow2() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow2 != 0; }
+ static bool supports_sse4a() { return (_cpuFeatures & CPU_SSE4A) != 0; }
+
+ static bool supports_compare_and_exchange() { return true; }
+
+ static const char* cpu_features() { return _features_str; }
+
+ static intx allocate_prefetch_distance() {
+ // This method should be called before allocate_prefetch_style().
+ //
+ // Hardware prefetching (distance/size in bytes):
+ // Pentium 3 - 64 / 32
+ // Pentium 4 - 256 / 128
+ // Athlon - 64 / 32 ????
+ // Opteron - 128 / 64 only when 2 sequential cache lines accessed
+ // Core - 128 / 64
+ //
+ // Software prefetching (distance in bytes / instruction with best score):
+ // Pentium 3 - 128 / prefetchnta
+ // Pentium 4 - 512 / prefetchnta
+ // Athlon - 128 / prefetchnta
+ // Opteron - 256 / prefetchnta
+ // Core - 256 / prefetchnta
+ // It will be used only when AllocatePrefetchStyle > 0
+
+ intx count = AllocatePrefetchDistance;
+ if (count < 0) { // default ?
+ if (is_amd()) { // AMD
+ if (supports_sse2())
+ count = 256; // Opteron
+ else
+ count = 128; // Athlon
+ } else { // Intel
+ if (supports_sse2())
+ if (cpu_family() == 6) {
+ count = 256; // Pentium M, Core, Core2
+ } else {
+ count = 512; // Pentium 4
+ }
+ else
+ count = 128; // Pentium 3 (and all other old CPUs)
+ }
+ }
+ return count;
+ }
+ static intx allocate_prefetch_style() {
+ assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
+ // Return 0 if AllocatePrefetchDistance was not defined.
+ return AllocatePrefetchDistance > 0 ? AllocatePrefetchStyle : 0;
+ }
+
+ // Prefetch interval for gc copy/scan == 9 dcache lines. Derived from
+ // 50-warehouse specjbb runs on a 2-way 1.8ghz opteron using a 4gb heap.
+ // Tested intervals from 128 to 2048 in increments of 64 == one cache line.
+ // 256 bytes (4 dcache lines) was the nearest runner-up to 576.
+
+ // gc copy/scan is disabled if prefetchw isn't supported, because
+ // Prefetch::write emits an inlined prefetchw on Linux.
+ // Do not use the 3dnow prefetchw instruction. It isn't supported on em64t.
+ // The used prefetcht0 instruction works for both amd64 and em64t.
+ static intx prefetch_copy_interval_in_bytes() {
+ intx interval = PrefetchCopyIntervalInBytes;
+ return interval >= 0 ? interval : 576;
+ }
+ static intx prefetch_scan_interval_in_bytes() {
+ intx interval = PrefetchScanIntervalInBytes;
+ return interval >= 0 ? interval : 576;
+ }
+ static intx prefetch_fields_ahead() {
+ intx count = PrefetchFieldsAhead;
+ return count >= 0 ? count : 1;
+ }
+};
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_32.cpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,472 +0,0 @@
-/*
- * Copyright 1997-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.
- *
- */
-
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_x86_32.cpp.incl"
-
-
-int VM_Version::_cpu;
-int VM_Version::_model;
-int VM_Version::_stepping;
-int VM_Version::_cpuFeatures;
-const char* VM_Version::_features_str = "";
-VM_Version::CpuidInfo VM_Version::_cpuid_info = { 0, };
-
-static BufferBlob* stub_blob;
-static const int stub_size = 300;
-
-extern "C" {
- typedef void (*getPsrInfo_stub_t)(void*);
-}
-static getPsrInfo_stub_t getPsrInfo_stub = NULL;
-
-
-class VM_Version_StubGenerator: public StubCodeGenerator {
- public:
-
- VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
-
- address generate_getPsrInfo() {
- // Flags to test CPU type.
- const uint32_t EFL_AC = 0x40000;
- const uint32_t EFL_ID = 0x200000;
- // Values for when we don't have a CPUID instruction.
- const int CPU_FAMILY_SHIFT = 8;
- const uint32_t CPU_FAMILY_386 = (3 << CPU_FAMILY_SHIFT);
- const uint32_t CPU_FAMILY_486 = (4 << CPU_FAMILY_SHIFT);
-
- Label detect_486, cpu486, detect_586, std_cpuid1;
- Label ext_cpuid1, ext_cpuid5, done;
-
- StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
-# define __ _masm->
-
- address start = __ pc();
-
- //
- // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
- //
- __ push(rbp);
- __ movptr(rbp, Address(rsp, 8)); // cpuid_info address
- __ push(rbx);
- __ push(rsi);
- __ pushf(); // preserve rbx, and flags
- __ pop(rax);
- __ push(rax);
- __ mov(rcx, rax);
- //
- // if we are unable to change the AC flag, we have a 386
- //
- __ xorl(rax, EFL_AC);
- __ push(rax);
- __ popf();
- __ pushf();
- __ pop(rax);
- __ cmpptr(rax, rcx);
- __ jccb(Assembler::notEqual, detect_486);
-
- __ movl(rax, CPU_FAMILY_386);
- __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
- __ jmp(done);
-
- //
- // If we are unable to change the ID flag, we have a 486 which does
- // not support the "cpuid" instruction.
- //
- __ bind(detect_486);
- __ mov(rax, rcx);
- __ xorl(rax, EFL_ID);
- __ push(rax);
- __ popf();
- __ pushf();
- __ pop(rax);
- __ cmpptr(rcx, rax);
- __ jccb(Assembler::notEqual, detect_586);
-
- __ bind(cpu486);
- __ movl(rax, CPU_FAMILY_486);
- __ movl(Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())), rax);
- __ jmp(done);
-
- //
- // at this point, we have a chip which supports the "cpuid" instruction
- //
- __ bind(detect_586);
- __ xorptr(rax, rax);
- __ cpuid();
- __ orptr(rax, rax);
- __ jcc(Assembler::equal, cpu486); // if cpuid doesn't support an input
- // value of at least 1, we give up and
- // assume a 486
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid0_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- __ cmpl(rax, 3); // Is cpuid(0x4) supported?
- __ jccb(Assembler::belowEqual, std_cpuid1);
-
- //
- // cpuid(0x4) Deterministic cache params
- //
- __ movl(rax, 4); // and rcx already set to 0x0
- __ xorl(rcx, rcx);
- __ cpuid();
- __ push(rax);
- __ andl(rax, 0x1f); // Determine if valid cache parameters used
- __ orl(rax, rax); // rax,[4:0] == 0 indicates invalid cache
- __ pop(rax);
- __ jccb(Assembler::equal, std_cpuid1);
-
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::dcp_cpuid4_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // Standard cpuid(0x1)
- //
- __ bind(std_cpuid1);
- __ movl(rax, 1);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- __ movl(rax, 0x80000000);
- __ cpuid();
- __ cmpl(rax, 0x80000000); // Is cpuid(0x80000001) supported?
- __ jcc(Assembler::belowEqual, done);
- __ cmpl(rax, 0x80000004); // Is cpuid(0x80000005) supported?
- __ jccb(Assembler::belowEqual, ext_cpuid1);
- __ cmpl(rax, 0x80000007); // Is cpuid(0x80000008) supported?
- __ jccb(Assembler::belowEqual, ext_cpuid5);
- //
- // Extended cpuid(0x80000008)
- //
- __ movl(rax, 0x80000008);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid8_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // Extended cpuid(0x80000005)
- //
- __ bind(ext_cpuid5);
- __ movl(rax, 0x80000005);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid5_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // Extended cpuid(0x80000001)
- //
- __ bind(ext_cpuid1);
- __ movl(rax, 0x80000001);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid1_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // return
- //
- __ bind(done);
- __ popf();
- __ pop(rsi);
- __ pop(rbx);
- __ pop(rbp);
- __ ret(0);
-
-# undef __
-
- return start;
- };
-};
-
-
-void VM_Version::get_processor_features() {
-
- _cpu = 4; // 486 by default
- _model = 0;
- _stepping = 0;
- _cpuFeatures = 0;
- _logical_processors_per_package = 1;
- if (!Use486InstrsOnly) {
- // Get raw processor info
- getPsrInfo_stub(&_cpuid_info);
- assert_is_initialized();
- _cpu = extended_cpu_family();
- _model = extended_cpu_model();
- _stepping = cpu_stepping();
- if (cpu_family() > 4) { // it supports CPUID
- _cpuFeatures = feature_flags();
- // Logical processors are only available on P4s and above,
- // and only if hyperthreading is available.
- _logical_processors_per_package = logical_processor_count();
- }
- }
- _supports_cx8 = supports_cmpxchg8();
- // if the OS doesn't support SSE, we can't use this feature even if the HW does
- if( !os::supports_sse())
- _cpuFeatures &= ~(CPU_SSE|CPU_SSE2|CPU_SSE3|CPU_SSSE3|CPU_SSE4A|CPU_SSE4_1|CPU_SSE4_2);
- if (UseSSE < 4) {
- _cpuFeatures &= ~CPU_SSE4_1;
- _cpuFeatures &= ~CPU_SSE4_2;
- }
- if (UseSSE < 3) {
- _cpuFeatures &= ~CPU_SSE3;
- _cpuFeatures &= ~CPU_SSSE3;
- _cpuFeatures &= ~CPU_SSE4A;
- }
- if (UseSSE < 2)
- _cpuFeatures &= ~CPU_SSE2;
- if (UseSSE < 1)
- _cpuFeatures &= ~CPU_SSE;
-
- if (logical_processors_per_package() == 1) {
- // HT processor could be installed on a system which doesn't support HT.
- _cpuFeatures &= ~CPU_HT;
- }
-
- char buf[256];
- jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
- cores_per_cpu(), threads_per_core(),
- cpu_family(), _model, _stepping,
- (supports_cmov() ? ", cmov" : ""),
- (supports_cmpxchg8() ? ", cx8" : ""),
- (supports_fxsr() ? ", fxsr" : ""),
- (supports_mmx() ? ", mmx" : ""),
- (supports_sse() ? ", sse" : ""),
- (supports_sse2() ? ", sse2" : ""),
- (supports_sse3() ? ", sse3" : ""),
- (supports_ssse3()? ", ssse3": ""),
- (supports_sse4_1() ? ", sse4.1" : ""),
- (supports_sse4_2() ? ", sse4.2" : ""),
- (supports_mmx_ext() ? ", mmxext" : ""),
- (supports_3dnow() ? ", 3dnow" : ""),
- (supports_3dnow2() ? ", 3dnowext" : ""),
- (supports_sse4a() ? ", sse4a": ""),
- (supports_ht() ? ", ht": ""));
- _features_str = strdup(buf);
-
- // UseSSE is set to the smaller of what hardware supports and what
- // the command line requires. I.e., you cannot set UseSSE to 2 on
- // older Pentiums which do not support it.
- if( UseSSE > 4 ) UseSSE=4;
- if( UseSSE < 0 ) UseSSE=0;
- if( !supports_sse4_1() ) // Drop to 3 if no SSE4 support
- UseSSE = MIN2((intx)3,UseSSE);
- if( !supports_sse3() ) // Drop to 2 if no SSE3 support
- UseSSE = MIN2((intx)2,UseSSE);
- if( !supports_sse2() ) // Drop to 1 if no SSE2 support
- UseSSE = MIN2((intx)1,UseSSE);
- if( !supports_sse () ) // Drop to 0 if no SSE support
- UseSSE = 0;
-
- // On new cpus instructions which update whole XMM register should be used
- // to prevent partial register stall due to dependencies on high half.
- //
- // UseXmmLoadAndClearUpper == true --> movsd(xmm, mem)
- // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)
- // UseXmmRegToRegMoveAll == true --> movaps(xmm, xmm), movapd(xmm, xmm).
- // UseXmmRegToRegMoveAll == false --> movss(xmm, xmm), movsd(xmm, xmm).
-
- if( is_amd() ) { // AMD cpus specific settings
- if( supports_sse2() && FLAG_IS_DEFAULT(UseAddressNop) ) {
- // Use it on new AMD cpus starting from Opteron.
- UseAddressNop = true;
- }
- if( supports_sse2() && FLAG_IS_DEFAULT(UseNewLongLShift) ) {
- // Use it on new AMD cpus starting from Opteron.
- UseNewLongLShift = true;
- }
- if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
- if( supports_sse4a() ) {
- UseXmmLoadAndClearUpper = true; // use movsd only on '10h' Opteron
- } else {
- UseXmmLoadAndClearUpper = false;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
- if( supports_sse4a() ) {
- UseXmmRegToRegMoveAll = true; // use movaps, movapd only on '10h'
- } else {
- UseXmmRegToRegMoveAll = false;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmI2F) ) {
- if( supports_sse4a() ) {
- UseXmmI2F = true;
- } else {
- UseXmmI2F = false;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmI2D) ) {
- if( supports_sse4a() ) {
- UseXmmI2D = true;
- } else {
- UseXmmI2D = false;
- }
- }
- }
-
- if( is_intel() ) { // Intel cpus specific settings
- if( FLAG_IS_DEFAULT(UseStoreImmI16) ) {
- UseStoreImmI16 = false; // don't use it on Intel cpus
- }
- if( cpu_family() == 6 || cpu_family() == 15 ) {
- if( FLAG_IS_DEFAULT(UseAddressNop) ) {
- // Use it on all Intel cpus starting from PentiumPro
- UseAddressNop = true;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
- UseXmmLoadAndClearUpper = true; // use movsd on all Intel cpus
- }
- if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
- if( supports_sse3() ) {
- UseXmmRegToRegMoveAll = true; // use movaps, movapd on new Intel cpus
- } else {
- UseXmmRegToRegMoveAll = false;
- }
- }
- if( cpu_family() == 6 && supports_sse3() ) { // New Intel cpus
-#ifdef COMPILER2
- if( FLAG_IS_DEFAULT(MaxLoopPad) ) {
- // For new Intel cpus do the next optimization:
- // don't align the beginning of a loop if there are enough instructions
- // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
- // in current fetch line (OptoLoopAlignment) or the padding
- // is big (> MaxLoopPad).
- // Set MaxLoopPad to 11 for new Intel cpus to reduce number of
- // generated NOP instructions. 11 is the largest size of one
- // address NOP instruction '0F 1F' (see Assembler::nop(i)).
- MaxLoopPad = 11;
- }
-#endif // COMPILER2
- if( FLAG_IS_DEFAULT(UseXMMForArrayCopy) ) {
- UseXMMForArrayCopy = true; // use SSE2 movq on new Intel cpus
- }
- if( supports_sse4_2() && supports_ht() ) { // Newest Intel cpus
- if( FLAG_IS_DEFAULT(UseUnalignedLoadStores) && UseXMMForArrayCopy ) {
- UseUnalignedLoadStores = true; // use movdqu on newest Intel cpus
- }
- }
- }
- }
-
- assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
- assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
-
- // set valid Prefetch instruction
- if( ReadPrefetchInstr < 0 ) ReadPrefetchInstr = 0;
- if( ReadPrefetchInstr > 3 ) ReadPrefetchInstr = 3;
- if( ReadPrefetchInstr == 3 && !supports_3dnow() ) ReadPrefetchInstr = 0;
- if( !supports_sse() && supports_3dnow() ) ReadPrefetchInstr = 3;
-
- if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
- if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3;
- if( AllocatePrefetchInstr == 3 && !supports_3dnow() ) AllocatePrefetchInstr=0;
- if( !supports_sse() && supports_3dnow() ) AllocatePrefetchInstr = 3;
-
- // Allocation prefetch settings
- intx cache_line_size = L1_data_cache_line_size();
- if( cache_line_size > AllocatePrefetchStepSize )
- AllocatePrefetchStepSize = cache_line_size;
- if( FLAG_IS_DEFAULT(AllocatePrefetchLines) )
- AllocatePrefetchLines = 3; // Optimistic value
- assert(AllocatePrefetchLines > 0, "invalid value");
- if( AllocatePrefetchLines < 1 ) // set valid value in product VM
- AllocatePrefetchLines = 1; // Conservative value
-
- AllocatePrefetchDistance = allocate_prefetch_distance();
- AllocatePrefetchStyle = allocate_prefetch_style();
-
- if( AllocatePrefetchStyle == 2 && is_intel() &&
- cpu_family() == 6 && supports_sse3() ) { // watermark prefetching on Core
- AllocatePrefetchDistance = 320;
- }
- assert(AllocatePrefetchDistance % AllocatePrefetchStepSize == 0, "invalid value");
-
-#ifndef PRODUCT
- if (PrintMiscellaneous && Verbose) {
- tty->print_cr("Logical CPUs per core: %u",
- logical_processors_per_package());
- tty->print_cr("UseSSE=%d",UseSSE);
- tty->print("Allocation: ");
- if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow()) {
- tty->print_cr("no prefetching");
- } else {
- if (UseSSE == 0 && supports_3dnow()) {
- tty->print("PREFETCHW");
- } else if (UseSSE >= 1) {
- if (AllocatePrefetchInstr == 0) {
- tty->print("PREFETCHNTA");
- } else if (AllocatePrefetchInstr == 1) {
- tty->print("PREFETCHT0");
- } else if (AllocatePrefetchInstr == 2) {
- tty->print("PREFETCHT2");
- } else if (AllocatePrefetchInstr == 3) {
- tty->print("PREFETCHW");
- }
- }
- if (AllocatePrefetchLines > 1) {
- tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
- } else {
- tty->print_cr(" %d, one line", AllocatePrefetchDistance);
- }
- }
- }
-#endif // !PRODUCT
-}
-
-void VM_Version::initialize() {
- ResourceMark rm;
- // Making this stub must be FIRST use of assembler
-
- stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
- if (stub_blob == NULL) {
- vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
- }
- CodeBuffer c(stub_blob->instructions_begin(),
- stub_blob->instructions_size());
- VM_Version_StubGenerator g(&c);
- getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
- g.generate_getPsrInfo());
-
- get_processor_features();
-}
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_32.hpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,439 +0,0 @@
-/*
- * Copyright 1997-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.
- *
- */
-
-class VM_Version: public Abstract_VM_Version {
-public:
- // cpuid result register layouts. These are all unions of a uint32_t
- // (in case anyone wants access to the register as a whole) and a bitfield.
-
- union StdCpuid1Eax {
- uint32_t value;
- struct {
- uint32_t stepping : 4,
- model : 4,
- family : 4,
- proc_type : 2,
- : 2,
- ext_model : 4,
- ext_family : 8,
- : 4;
- } bits;
- };
-
- union StdCpuid1Ebx { // example, unused
- uint32_t value;
- struct {
- uint32_t brand_id : 8,
- clflush_size : 8,
- threads_per_cpu : 8,
- apic_id : 8;
- } bits;
- };
-
- union StdCpuid1Ecx {
- uint32_t value;
- struct {
- uint32_t sse3 : 1,
- : 2,
- monitor : 1,
- : 1,
- vmx : 1,
- : 1,
- est : 1,
- : 1,
- ssse3 : 1,
- cid : 1,
- : 2,
- cmpxchg16: 1,
- : 4,
- dca : 1,
- sse4_1 : 1,
- sse4_2 : 1,
- : 11;
- } bits;
- };
-
- union StdCpuid1Edx {
- uint32_t value;
- struct {
- uint32_t : 4,
- tsc : 1,
- : 3,
- cmpxchg8 : 1,
- : 6,
- cmov : 1,
- : 7,
- mmx : 1,
- fxsr : 1,
- sse : 1,
- sse2 : 1,
- : 1,
- ht : 1,
- : 3;
- } bits;
- };
-
- union DcpCpuid4Eax {
- uint32_t value;
- struct {
- uint32_t cache_type : 5,
- : 21,
- cores_per_cpu : 6;
- } bits;
- };
-
- union DcpCpuid4Ebx {
- uint32_t value;
- struct {
- uint32_t L1_line_size : 12,
- partitions : 10,
- associativity : 10;
- } bits;
- };
-
- union ExtCpuid1Ecx {
- uint32_t value;
- struct {
- uint32_t LahfSahf : 1,
- CmpLegacy : 1,
- : 4,
- abm : 1,
- sse4a : 1,
- misalignsse : 1,
- prefetchw : 1,
- : 22;
- } bits;
- };
-
- union ExtCpuid1Edx {
- uint32_t value;
- struct {
- uint32_t : 22,
- mmx_amd : 1,
- mmx : 1,
- fxsr : 1,
- : 4,
- long_mode : 1,
- tdnow2 : 1,
- tdnow : 1;
- } bits;
- };
-
- union ExtCpuid5Ex {
- uint32_t value;
- struct {
- uint32_t L1_line_size : 8,
- L1_tag_lines : 8,
- L1_assoc : 8,
- L1_size : 8;
- } bits;
- };
-
- union ExtCpuid8Ecx {
- uint32_t value;
- struct {
- uint32_t cores_per_cpu : 8,
- : 24;
- } bits;
- };
-
-protected:
- static int _cpu;
- static int _model;
- static int _stepping;
- static int _cpuFeatures; // features returned by the "cpuid" instruction
- // 0 if this instruction is not available
- static const char* _features_str;
-
- enum {
- CPU_CX8 = (1 << 0), // next bits are from cpuid 1 (EDX)
- CPU_CMOV = (1 << 1),
- CPU_FXSR = (1 << 2),
- CPU_HT = (1 << 3),
- CPU_MMX = (1 << 4),
- CPU_3DNOW= (1 << 5), // 3DNow comes from cpuid 0x80000001 (EDX)
- CPU_SSE = (1 << 6),
- CPU_SSE2 = (1 << 7),
- CPU_SSE3 = (1 << 8), // sse3 comes from cpuid 1 (ECX)
- CPU_SSSE3= (1 << 9),
- CPU_SSE4A= (1 <<10),
- CPU_SSE4_1 = (1 << 11),
- CPU_SSE4_2 = (1 << 12)
- } cpuFeatureFlags;
-
- // cpuid information block. All info derived from executing cpuid with
- // various function numbers is stored here. Intel and AMD info is
- // merged in this block: accessor methods disentangle it.
- //
- // The info block is laid out in subblocks of 4 dwords corresponding to
- // rax, rbx, rcx and rdx, whether or not they contain anything useful.
- struct CpuidInfo {
- // cpuid function 0
- uint32_t std_max_function;
- uint32_t std_vendor_name_0;
- uint32_t std_vendor_name_1;
- uint32_t std_vendor_name_2;
-
- // cpuid function 1
- StdCpuid1Eax std_cpuid1_rax;
- StdCpuid1Ebx std_cpuid1_rbx;
- StdCpuid1Ecx std_cpuid1_rcx;
- StdCpuid1Edx std_cpuid1_rdx;
-
- // cpuid function 4 (deterministic cache parameters)
- DcpCpuid4Eax dcp_cpuid4_rax;
- DcpCpuid4Ebx dcp_cpuid4_rbx;
- uint32_t dcp_cpuid4_rcx; // unused currently
- uint32_t dcp_cpuid4_rdx; // unused currently
-
- // cpuid function 0x80000000 // example, unused
- uint32_t ext_max_function;
- uint32_t ext_vendor_name_0;
- uint32_t ext_vendor_name_1;
- uint32_t ext_vendor_name_2;
-
- // cpuid function 0x80000001
- uint32_t ext_cpuid1_rax; // reserved
- uint32_t ext_cpuid1_rbx; // reserved
- ExtCpuid1Ecx ext_cpuid1_rcx;
- ExtCpuid1Edx ext_cpuid1_rdx;
-
- // cpuid functions 0x80000002 thru 0x80000004: example, unused
- uint32_t proc_name_0, proc_name_1, proc_name_2, proc_name_3;
- uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
- uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
-
- // cpuid function 0x80000005 //AMD L1, Intel reserved
- uint32_t ext_cpuid5_rax; // unused currently
- uint32_t ext_cpuid5_rbx; // reserved
- ExtCpuid5Ex ext_cpuid5_rcx; // L1 data cache info (AMD)
- ExtCpuid5Ex ext_cpuid5_rdx; // L1 instruction cache info (AMD)
-
- // cpuid function 0x80000008
- uint32_t ext_cpuid8_rax; // unused currently
- uint32_t ext_cpuid8_rbx; // reserved
- ExtCpuid8Ecx ext_cpuid8_rcx;
- uint32_t ext_cpuid8_rdx; // reserved
- };
-
- // The actual cpuid info block
- static CpuidInfo _cpuid_info;
-
- // Extractors and predicates
- static uint32_t extended_cpu_family() {
- uint32_t result = _cpuid_info.std_cpuid1_rax.bits.family;
- result += _cpuid_info.std_cpuid1_rax.bits.ext_family;
- return result;
- }
- static uint32_t extended_cpu_model() {
- uint32_t result = _cpuid_info.std_cpuid1_rax.bits.model;
- result |= _cpuid_info.std_cpuid1_rax.bits.ext_model << 4;
- return result;
- }
- static uint32_t cpu_stepping() {
- uint32_t result = _cpuid_info.std_cpuid1_rax.bits.stepping;
- return result;
- }
- static uint logical_processor_count() {
- uint result = threads_per_core();
- return result;
- }
- static uint32_t feature_flags() {
- uint32_t result = 0;
- if (_cpuid_info.std_cpuid1_rdx.bits.cmpxchg8 != 0)
- result |= CPU_CX8;
- if (_cpuid_info.std_cpuid1_rdx.bits.cmov != 0)
- result |= CPU_CMOV;
- if (_cpuid_info.std_cpuid1_rdx.bits.fxsr != 0 || is_amd() &&
- _cpuid_info.ext_cpuid1_rdx.bits.fxsr != 0)
- result |= CPU_FXSR;
- // HT flag is set for multi-core processors also.
- if (threads_per_core() > 1)
- result |= CPU_HT;
- if (_cpuid_info.std_cpuid1_rdx.bits.mmx != 0 || is_amd() &&
- _cpuid_info.ext_cpuid1_rdx.bits.mmx != 0)
- result |= CPU_MMX;
- if (is_amd() && _cpuid_info.ext_cpuid1_rdx.bits.tdnow != 0)
- result |= CPU_3DNOW;
- if (_cpuid_info.std_cpuid1_rdx.bits.sse != 0)
- result |= CPU_SSE;
- if (_cpuid_info.std_cpuid1_rdx.bits.sse2 != 0)
- result |= CPU_SSE2;
- if (_cpuid_info.std_cpuid1_rcx.bits.sse3 != 0)
- result |= CPU_SSE3;
- if (_cpuid_info.std_cpuid1_rcx.bits.ssse3 != 0)
- result |= CPU_SSSE3;
- if (is_amd() && _cpuid_info.ext_cpuid1_rcx.bits.sse4a != 0)
- result |= CPU_SSE4A;
- if (_cpuid_info.std_cpuid1_rcx.bits.sse4_1 != 0)
- result |= CPU_SSE4_1;
- if (_cpuid_info.std_cpuid1_rcx.bits.sse4_2 != 0)
- result |= CPU_SSE4_2;
- return result;
- }
-
- static void get_processor_features();
-
-public:
- // Offsets for cpuid asm stub
- static ByteSize std_cpuid0_offset() { return byte_offset_of(CpuidInfo, std_max_function); }
- static ByteSize std_cpuid1_offset() { return byte_offset_of(CpuidInfo, std_cpuid1_rax); }
- static ByteSize dcp_cpuid4_offset() { return byte_offset_of(CpuidInfo, dcp_cpuid4_rax); }
- static ByteSize ext_cpuid1_offset() { return byte_offset_of(CpuidInfo, ext_cpuid1_rax); }
- static ByteSize ext_cpuid5_offset() { return byte_offset_of(CpuidInfo, ext_cpuid5_rax); }
- static ByteSize ext_cpuid8_offset() { return byte_offset_of(CpuidInfo, ext_cpuid8_rax); }
-
- // Initialization
- static void initialize();
-
- // Asserts
- static void assert_is_initialized() {
- assert(_cpuid_info.std_cpuid1_rax.bits.family != 0, "VM_Version not initialized");
- }
-
- //
- // Processor family:
- // 3 - 386
- // 4 - 486
- // 5 - Pentium
- // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
- // Pentium M, Core Solo, Core Duo, Core2 Duo
- // family 6 model: 9, 13, 14, 15
- // 0x0f - Pentium 4, Opteron
- //
- // Note: The cpu family should be used to select between
- // instruction sequences which are valid on all Intel
- // processors. Use the feature test functions below to
- // determine whether a particular instruction is supported.
- //
- static int cpu_family() { return _cpu;}
- static bool is_P6() { return cpu_family() >= 6; }
-
- static bool is_amd() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
- static bool is_intel() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
-
- static uint cores_per_cpu() {
- uint result = 1;
- if (is_intel()) {
- result = (_cpuid_info.dcp_cpuid4_rax.bits.cores_per_cpu + 1);
- } else if (is_amd()) {
- result = (_cpuid_info.ext_cpuid8_rcx.bits.cores_per_cpu + 1);
- }
- return result;
- }
-
- static uint threads_per_core() {
- uint result = 1;
- if (_cpuid_info.std_cpuid1_rdx.bits.ht != 0) {
- result = _cpuid_info.std_cpuid1_rbx.bits.threads_per_cpu /
- cores_per_cpu();
- }
- return result;
- }
-
- static intx L1_data_cache_line_size() {
- intx result = 0;
- if (is_intel()) {
- result = (_cpuid_info.dcp_cpuid4_rbx.bits.L1_line_size + 1);
- } else if (is_amd()) {
- result = _cpuid_info.ext_cpuid5_rcx.bits.L1_line_size;
- }
- if (result < 32) // not defined ?
- result = 32; // 32 bytes by default on x86
- return result;
- }
-
- //
- // Feature identification
- //
- static bool supports_cpuid() { return _cpuFeatures != 0; }
- static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
- static bool supports_cmov() { return (_cpuFeatures & CPU_CMOV) != 0; }
- static bool supports_fxsr() { return (_cpuFeatures & CPU_FXSR) != 0; }
- static bool supports_ht() { return (_cpuFeatures & CPU_HT) != 0; }
- static bool supports_mmx() { return (_cpuFeatures & CPU_MMX) != 0; }
- static bool supports_sse() { return (_cpuFeatures & CPU_SSE) != 0; }
- static bool supports_sse2() { return (_cpuFeatures & CPU_SSE2) != 0; }
- static bool supports_sse3() { return (_cpuFeatures & CPU_SSE3) != 0; }
- static bool supports_ssse3() { return (_cpuFeatures & CPU_SSSE3)!= 0; }
- static bool supports_sse4_1() { return (_cpuFeatures & CPU_SSE4_1) != 0; }
- static bool supports_sse4_2() { return (_cpuFeatures & CPU_SSE4_2) != 0; }
- //
- // AMD features
- //
- static bool supports_3dnow() { return (_cpuFeatures & CPU_3DNOW) != 0; }
- static bool supports_mmx_ext() { return is_amd() && _cpuid_info.ext_cpuid1_rdx.bits.mmx_amd != 0; }
- static bool supports_3dnow2() { return is_amd() && _cpuid_info.ext_cpuid1_rdx.bits.tdnow2 != 0; }
- static bool supports_sse4a() { return (_cpuFeatures & CPU_SSE4A) != 0; }
-
- static bool supports_compare_and_exchange() { return true; }
-
- static const char* cpu_features() { return _features_str; }
-
- static intx allocate_prefetch_distance() {
- // This method should be called before allocate_prefetch_style().
- //
- // Hardware prefetching (distance/size in bytes):
- // Pentium 3 - 64 / 32
- // Pentium 4 - 256 / 128
- // Athlon - 64 / 32 ????
- // Opteron - 128 / 64 only when 2 sequential cache lines accessed
- // Core - 128 / 64
- //
- // Software prefetching (distance in bytes / instruction with best score):
- // Pentium 3 - 128 / prefetchnta
- // Pentium 4 - 512 / prefetchnta
- // Athlon - 128 / prefetchnta
- // Opteron - 256 / prefetchnta
- // Core - 256 / prefetchnta
- // It will be used only when AllocatePrefetchStyle > 0
-
- intx count = AllocatePrefetchDistance;
- if (count < 0) { // default ?
- if (is_amd()) { // AMD
- if (supports_sse2())
- count = 256; // Opteron
- else
- count = 128; // Athlon
- } else { // Intel
- if (supports_sse2())
- if (cpu_family() == 6) {
- count = 256; // Pentium M, Core, Core2
- } else {
- count = 512; // Pentium 4
- }
- else
- count = 128; // Pentium 3 (and all other old CPUs)
- }
- }
- return count;
- }
- static intx allocate_prefetch_style() {
- assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
- // Return 0 if AllocatePrefetchDistance was not defined or
- // prefetch instruction is not supported.
- return (AllocatePrefetchDistance > 0 &&
- (supports_3dnow() || supports_sse())) ? AllocatePrefetchStyle : 0;
- }
-};
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_64.cpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +0,0 @@
-/*
- * Copyright 2003-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.
- *
- */
-
-# include "incls/_precompiled.incl"
-# include "incls/_vm_version_x86_64.cpp.incl"
-
-int VM_Version::_cpu;
-int VM_Version::_model;
-int VM_Version::_stepping;
-int VM_Version::_cpuFeatures;
-const char* VM_Version::_features_str = "";
-VM_Version::CpuidInfo VM_Version::_cpuid_info = { 0, };
-
-static BufferBlob* stub_blob;
-static const int stub_size = 300;
-
-extern "C" {
- typedef void (*getPsrInfo_stub_t)(void*);
-}
-static getPsrInfo_stub_t getPsrInfo_stub = NULL;
-
-
-class VM_Version_StubGenerator: public StubCodeGenerator {
- public:
-
- VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
-
- address generate_getPsrInfo() {
-
- Label std_cpuid1, ext_cpuid1, ext_cpuid5, done;
-
- StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
-# define __ _masm->
-
- address start = __ pc();
-
- //
- // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
- //
- // rcx and rdx are first and second argument registers on windows
-
- __ push(rbp);
- __ mov(rbp, c_rarg0); // cpuid_info address
- __ push(rbx);
- __ push(rsi);
-
- //
- // we have a chip which supports the "cpuid" instruction
- //
- __ xorl(rax, rax);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid0_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- __ cmpl(rax, 3); // Is cpuid(0x4) supported?
- __ jccb(Assembler::belowEqual, std_cpuid1);
-
- //
- // cpuid(0x4) Deterministic cache params
- //
- __ movl(rax, 4);
- __ xorl(rcx, rcx); // L1 cache
- __ cpuid();
- __ push(rax);
- __ andl(rax, 0x1f); // Determine if valid cache parameters used
- __ orl(rax, rax); // eax[4:0] == 0 indicates invalid cache
- __ pop(rax);
- __ jccb(Assembler::equal, std_cpuid1);
-
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::dcp_cpuid4_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // Standard cpuid(0x1)
- //
- __ bind(std_cpuid1);
- __ movl(rax, 1);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::std_cpuid1_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- __ movl(rax, 0x80000000);
- __ cpuid();
- __ cmpl(rax, 0x80000000); // Is cpuid(0x80000001) supported?
- __ jcc(Assembler::belowEqual, done);
- __ cmpl(rax, 0x80000004); // Is cpuid(0x80000005) supported?
- __ jccb(Assembler::belowEqual, ext_cpuid1);
- __ cmpl(rax, 0x80000007); // Is cpuid(0x80000008) supported?
- __ jccb(Assembler::belowEqual, ext_cpuid5);
- //
- // Extended cpuid(0x80000008)
- //
- __ movl(rax, 0x80000008);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid8_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // Extended cpuid(0x80000005)
- //
- __ bind(ext_cpuid5);
- __ movl(rax, 0x80000005);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid5_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // Extended cpuid(0x80000001)
- //
- __ bind(ext_cpuid1);
- __ movl(rax, 0x80000001);
- __ cpuid();
- __ lea(rsi, Address(rbp, in_bytes(VM_Version::ext_cpuid1_offset())));
- __ movl(Address(rsi, 0), rax);
- __ movl(Address(rsi, 4), rbx);
- __ movl(Address(rsi, 8), rcx);
- __ movl(Address(rsi,12), rdx);
-
- //
- // return
- //
- __ bind(done);
- __ pop(rsi);
- __ pop(rbx);
- __ pop(rbp);
- __ ret(0);
-
-# undef __
-
- return start;
- };
-};
-
-
-void VM_Version::get_processor_features() {
-
- _logical_processors_per_package = 1;
- // Get raw processor info
- getPsrInfo_stub(&_cpuid_info);
- assert_is_initialized();
- _cpu = extended_cpu_family();
- _model = extended_cpu_model();
- _stepping = cpu_stepping();
- _cpuFeatures = feature_flags();
- // Logical processors are only available on P4s and above,
- // and only if hyperthreading is available.
- _logical_processors_per_package = logical_processor_count();
- _supports_cx8 = supports_cmpxchg8();
- // OS should support SSE for x64 and hardware should support at least SSE2.
- if (!VM_Version::supports_sse2()) {
- vm_exit_during_initialization("Unknown x64 processor: SSE2 not supported");
- }
- if (UseSSE < 4) {
- _cpuFeatures &= ~CPU_SSE4_1;
- _cpuFeatures &= ~CPU_SSE4_2;
- }
- if (UseSSE < 3) {
- _cpuFeatures &= ~CPU_SSE3;
- _cpuFeatures &= ~CPU_SSSE3;
- _cpuFeatures &= ~CPU_SSE4A;
- }
- if (UseSSE < 2)
- _cpuFeatures &= ~CPU_SSE2;
- if (UseSSE < 1)
- _cpuFeatures &= ~CPU_SSE;
-
- if (logical_processors_per_package() == 1) {
- // HT processor could be installed on a system which doesn't support HT.
- _cpuFeatures &= ~CPU_HT;
- }
-
- char buf[256];
- jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
- cores_per_cpu(), threads_per_core(),
- cpu_family(), _model, _stepping,
- (supports_cmov() ? ", cmov" : ""),
- (supports_cmpxchg8() ? ", cx8" : ""),
- (supports_fxsr() ? ", fxsr" : ""),
- (supports_mmx() ? ", mmx" : ""),
- (supports_sse() ? ", sse" : ""),
- (supports_sse2() ? ", sse2" : ""),
- (supports_sse3() ? ", sse3" : ""),
- (supports_ssse3()? ", ssse3": ""),
- (supports_sse4_1() ? ", sse4.1" : ""),
- (supports_sse4_2() ? ", sse4.2" : ""),
- (supports_mmx_ext() ? ", mmxext" : ""),
- (supports_3dnow() ? ", 3dnow" : ""),
- (supports_3dnow2() ? ", 3dnowext" : ""),
- (supports_sse4a() ? ", sse4a": ""),
- (supports_ht() ? ", ht": ""));
- _features_str = strdup(buf);
-
- // UseSSE is set to the smaller of what hardware supports and what
- // the command line requires. I.e., you cannot set UseSSE to 2 on
- // older Pentiums which do not support it.
- if( UseSSE > 4 ) UseSSE=4;
- if( UseSSE < 0 ) UseSSE=0;
- if( !supports_sse4_1() ) // Drop to 3 if no SSE4 support
- UseSSE = MIN2((intx)3,UseSSE);
- if( !supports_sse3() ) // Drop to 2 if no SSE3 support
- UseSSE = MIN2((intx)2,UseSSE);
- if( !supports_sse2() ) // Drop to 1 if no SSE2 support
- UseSSE = MIN2((intx)1,UseSSE);
- if( !supports_sse () ) // Drop to 0 if no SSE support
- UseSSE = 0;
-
- // On new cpus instructions which update whole XMM register should be used
- // to prevent partial register stall due to dependencies on high half.
- //
- // UseXmmLoadAndClearUpper == true --> movsd(xmm, mem)
- // UseXmmLoadAndClearUpper == false --> movlpd(xmm, mem)
- // UseXmmRegToRegMoveAll == true --> movaps(xmm, xmm), movapd(xmm, xmm).
- // UseXmmRegToRegMoveAll == false --> movss(xmm, xmm), movsd(xmm, xmm).
-
- if( is_amd() ) { // AMD cpus specific settings
- if( FLAG_IS_DEFAULT(UseAddressNop) ) {
- // Use it on all AMD cpus starting from Opteron (don't need
- // a cpu check since only Opteron and new cpus support 64-bits mode).
- UseAddressNop = true;
- }
- if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
- if( supports_sse4a() ) {
- UseXmmLoadAndClearUpper = true; // use movsd only on '10h' Opteron
- } else {
- UseXmmLoadAndClearUpper = false;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
- if( supports_sse4a() ) {
- UseXmmRegToRegMoveAll = true; // use movaps, movapd only on '10h'
- } else {
- UseXmmRegToRegMoveAll = false;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmI2F) ) {
- if( supports_sse4a() ) {
- UseXmmI2F = true;
- } else {
- UseXmmI2F = false;
- }
- }
- if( FLAG_IS_DEFAULT(UseXmmI2D) ) {
- if( supports_sse4a() ) {
- UseXmmI2D = true;
- } else {
- UseXmmI2D = false;
- }
- }
- }
-
- if( is_intel() ) { // Intel cpus specific settings
- if( FLAG_IS_DEFAULT(UseStoreImmI16) ) {
- UseStoreImmI16 = false; // don't use it on Intel cpus
- }
- if( FLAG_IS_DEFAULT(UseAddressNop) ) {
- // Use it on all Intel cpus starting from PentiumPro
- // (don't need a cpu check since only new cpus support 64-bits mode).
- UseAddressNop = true;
- }
- if( FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper) ) {
- UseXmmLoadAndClearUpper = true; // use movsd on all Intel cpus
- }
- if( FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll) ) {
- if( supports_sse3() ) {
- UseXmmRegToRegMoveAll = true; // use movaps, movapd on new Intel cpus
- } else {
- UseXmmRegToRegMoveAll = false;
- }
- }
- if( cpu_family() == 6 && supports_sse3() ) { // New Intel cpus
-#ifdef COMPILER2
- if( FLAG_IS_DEFAULT(MaxLoopPad) ) {
- // For new Intel cpus do the next optimization:
- // don't align the beginning of a loop if there are enough instructions
- // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
- // in current fetch line (OptoLoopAlignment) or the padding
- // is big (> MaxLoopPad).
- // Set MaxLoopPad to 11 for new Intel cpus to reduce number of
- // generated NOP instructions. 11 is the largest size of one
- // address NOP instruction '0F 1F' (see Assembler::nop(i)).
- MaxLoopPad = 11;
- }
-#endif // COMPILER2
- if( FLAG_IS_DEFAULT(UseXMMForArrayCopy) ) {
- UseXMMForArrayCopy = true; // use SSE2 movq on new Intel cpus
- }
- if( supports_sse4_2() && supports_ht() ) { // Newest Intel cpus
- if( FLAG_IS_DEFAULT(UseUnalignedLoadStores) && UseXMMForArrayCopy ) {
- UseUnalignedLoadStores = true; // use movdqu on newest Intel cpus
- }
- }
- }
- }
-
- assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
- assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
-
- // set valid Prefetch instruction
- if( ReadPrefetchInstr < 0 ) ReadPrefetchInstr = 0;
- if( ReadPrefetchInstr > 3 ) ReadPrefetchInstr = 3;
- if( ReadPrefetchInstr == 3 && !supports_3dnow() ) ReadPrefetchInstr = 0;
-
- if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
- if( AllocatePrefetchInstr > 3 ) AllocatePrefetchInstr = 3;
- if( AllocatePrefetchInstr == 3 && !supports_3dnow() ) AllocatePrefetchInstr=0;
-
- // Allocation prefetch settings
- intx cache_line_size = L1_data_cache_line_size();
- if( cache_line_size > AllocatePrefetchStepSize )
- AllocatePrefetchStepSize = cache_line_size;
- if( FLAG_IS_DEFAULT(AllocatePrefetchLines) )
- AllocatePrefetchLines = 3; // Optimistic value
- assert(AllocatePrefetchLines > 0, "invalid value");
- if( AllocatePrefetchLines < 1 ) // set valid value in product VM
- AllocatePrefetchLines = 1; // Conservative value
-
- AllocatePrefetchDistance = allocate_prefetch_distance();
- AllocatePrefetchStyle = allocate_prefetch_style();
-
- if( AllocatePrefetchStyle == 2 && is_intel() &&
- cpu_family() == 6 && supports_sse3() ) { // watermark prefetching on Core
- AllocatePrefetchDistance = 384;
- }
- assert(AllocatePrefetchDistance % AllocatePrefetchStepSize == 0, "invalid value");
-
- // Prefetch settings
- PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
- PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes();
- PrefetchFieldsAhead = prefetch_fields_ahead();
-
-#ifndef PRODUCT
- if (PrintMiscellaneous && Verbose) {
- tty->print_cr("Logical CPUs per core: %u",
- logical_processors_per_package());
- tty->print_cr("UseSSE=%d",UseSSE);
- tty->print("Allocation: ");
- if (AllocatePrefetchStyle <= 0) {
- tty->print_cr("no prefetching");
- } else {
- if (AllocatePrefetchInstr == 0) {
- tty->print("PREFETCHNTA");
- } else if (AllocatePrefetchInstr == 1) {
- tty->print("PREFETCHT0");
- } else if (AllocatePrefetchInstr == 2) {
- tty->print("PREFETCHT2");
- } else if (AllocatePrefetchInstr == 3) {
- tty->print("PREFETCHW");
- }
- if (AllocatePrefetchLines > 1) {
- tty->print_cr(" %d, %d lines with step %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
- } else {
- tty->print_cr(" %d, one line", AllocatePrefetchDistance);
- }
- }
- if (PrefetchCopyIntervalInBytes > 0) {
- tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes);
- }
- if (PrefetchScanIntervalInBytes > 0) {
- tty->print_cr("PrefetchScanIntervalInBytes %d", PrefetchScanIntervalInBytes);
- }
- if (PrefetchFieldsAhead > 0) {
- tty->print_cr("PrefetchFieldsAhead %d", PrefetchFieldsAhead);
- }
- }
-#endif // !PRODUCT
-}
-
-void VM_Version::initialize() {
- ResourceMark rm;
- // Making this stub must be FIRST use of assembler
-
- stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
- if (stub_blob == NULL) {
- vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
- }
- CodeBuffer c(stub_blob->instructions_begin(),
- stub_blob->instructions_size());
- VM_Version_StubGenerator g(&c);
- getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
- g.generate_getPsrInfo());
-
- get_processor_features();
-}
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_64.hpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,449 +0,0 @@
-/*
- * Copyright 2003-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.
- *
- */
-
-class VM_Version : public Abstract_VM_Version {
-public:
- // cpuid result register layouts. These are all unions of a uint32_t
- // (in case anyone wants access to the register as a whole) and a bitfield.
-
- union StdCpuid1Eax {
- uint32_t value;
- struct {
- uint32_t stepping : 4,
- model : 4,
- family : 4,
- proc_type : 2,
- : 2,
- ext_model : 4,
- ext_family : 8,
- : 4;
- } bits;
- };
-
- union StdCpuid1Ebx { // example, unused
- uint32_t value;
- struct {
- uint32_t brand_id : 8,
- clflush_size : 8,
- threads_per_cpu : 8,
- apic_id : 8;
- } bits;
- };
-
- union StdCpuid1Ecx {
- uint32_t value;
- struct {
- uint32_t sse3 : 1,
- : 2,
- monitor : 1,
- : 1,
- vmx : 1,
- : 1,
- est : 1,
- : 1,
- ssse3 : 1,
- cid : 1,
- : 2,
- cmpxchg16: 1,
- : 4,
- dca : 1,
- sse4_1 : 1,
- sse4_2 : 1,
- : 11;
- } bits;
- };
-
- union StdCpuid1Edx {
- uint32_t value;
- struct {
- uint32_t : 4,
- tsc : 1,
- : 3,
- cmpxchg8 : 1,
- : 6,
- cmov : 1,
- : 7,
- mmx : 1,
- fxsr : 1,
- sse : 1,
- sse2 : 1,
- : 1,
- ht : 1,
- : 3;
- } bits;
- };
-
- union DcpCpuid4Eax {
- uint32_t value;
- struct {
- uint32_t cache_type : 5,
- : 21,
- cores_per_cpu : 6;
- } bits;
- };
-
- union DcpCpuid4Ebx {
- uint32_t value;
- struct {
- uint32_t L1_line_size : 12,
- partitions : 10,
- associativity : 10;
- } bits;
- };
-
- union ExtCpuid1Edx {
- uint32_t value;
- struct {
- uint32_t : 22,
- mmx_amd : 1,
- mmx : 1,
- fxsr : 1,
- : 4,
- long_mode : 1,
- tdnow2 : 1,
- tdnow : 1;
- } bits;
- };
-
- union ExtCpuid1Ecx {
- uint32_t value;
- struct {
- uint32_t LahfSahf : 1,
- CmpLegacy : 1,
- : 4,
- abm : 1,
- sse4a : 1,
- misalignsse : 1,
- prefetchw : 1,
- : 22;
- } bits;
- };
-
- union ExtCpuid5Ex {
- uint32_t value;
- struct {
- uint32_t L1_line_size : 8,
- L1_tag_lines : 8,
- L1_assoc : 8,
- L1_size : 8;
- } bits;
- };
-
- union ExtCpuid8Ecx {
- uint32_t value;
- struct {
- uint32_t cores_per_cpu : 8,
- : 24;
- } bits;
- };
-
-protected:
- static int _cpu;
- static int _model;
- static int _stepping;
- static int _cpuFeatures; // features returned by the "cpuid" instruction
- // 0 if this instruction is not available
- static const char* _features_str;
-
- enum {
- CPU_CX8 = (1 << 0), // next bits are from cpuid 1 (EDX)
- CPU_CMOV = (1 << 1),
- CPU_FXSR = (1 << 2),
- CPU_HT = (1 << 3),
- CPU_MMX = (1 << 4),
- CPU_3DNOW= (1 << 5),
- CPU_SSE = (1 << 6),
- CPU_SSE2 = (1 << 7),
- CPU_SSE3 = (1 << 8),
- CPU_SSSE3= (1 << 9),
- CPU_SSE4A= (1 <<10),
- CPU_SSE4_1 = (1 << 11),
- CPU_SSE4_2 = (1 << 12)
- } cpuFeatureFlags;
-
- // cpuid information block. All info derived from executing cpuid with
- // various function numbers is stored here. Intel and AMD info is
- // merged in this block: accessor methods disentangle it.
- //
- // The info block is laid out in subblocks of 4 dwords corresponding to
- // eax, ebx, ecx and edx, whether or not they contain anything useful.
- struct CpuidInfo {
- // cpuid function 0
- uint32_t std_max_function;
- uint32_t std_vendor_name_0;
- uint32_t std_vendor_name_1;
- uint32_t std_vendor_name_2;
-
- // cpuid function 1
- StdCpuid1Eax std_cpuid1_eax;
- StdCpuid1Ebx std_cpuid1_ebx;
- StdCpuid1Ecx std_cpuid1_ecx;
- StdCpuid1Edx std_cpuid1_edx;
-
- // cpuid function 4 (deterministic cache parameters)
- DcpCpuid4Eax dcp_cpuid4_eax;
- DcpCpuid4Ebx dcp_cpuid4_ebx;
- uint32_t dcp_cpuid4_ecx; // unused currently
- uint32_t dcp_cpuid4_edx; // unused currently
-
- // cpuid function 0x80000000 // example, unused
- uint32_t ext_max_function;
- uint32_t ext_vendor_name_0;
- uint32_t ext_vendor_name_1;
- uint32_t ext_vendor_name_2;
-
- // cpuid function 0x80000001
- uint32_t ext_cpuid1_eax; // reserved
- uint32_t ext_cpuid1_ebx; // reserved
- ExtCpuid1Ecx ext_cpuid1_ecx;
- ExtCpuid1Edx ext_cpuid1_edx;
-
- // cpuid functions 0x80000002 thru 0x80000004: example, unused
- uint32_t proc_name_0, proc_name_1, proc_name_2, proc_name_3;
- uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
- uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
-
- // cpuid function 0x80000005 //AMD L1, Intel reserved
- uint32_t ext_cpuid5_eax; // unused currently
- uint32_t ext_cpuid5_ebx; // reserved
- ExtCpuid5Ex ext_cpuid5_ecx; // L1 data cache info (AMD)
- ExtCpuid5Ex ext_cpuid5_edx; // L1 instruction cache info (AMD)
-
- // cpuid function 0x80000008
- uint32_t ext_cpuid8_eax; // unused currently
- uint32_t ext_cpuid8_ebx; // reserved
- ExtCpuid8Ecx ext_cpuid8_ecx;
- uint32_t ext_cpuid8_edx; // reserved
- };
-
- // The actual cpuid info block
- static CpuidInfo _cpuid_info;
-
- // Extractors and predicates
- static uint32_t extended_cpu_family() {
- uint32_t result = _cpuid_info.std_cpuid1_eax.bits.family;
- result += _cpuid_info.std_cpuid1_eax.bits.ext_family;
- return result;
- }
- static uint32_t extended_cpu_model() {
- uint32_t result = _cpuid_info.std_cpuid1_eax.bits.model;
- result |= _cpuid_info.std_cpuid1_eax.bits.ext_model << 4;
- return result;
- }
- static uint32_t cpu_stepping() {
- uint32_t result = _cpuid_info.std_cpuid1_eax.bits.stepping;
- return result;
- }
- static uint logical_processor_count() {
- uint result = threads_per_core();
- return result;
- }
- static uint32_t feature_flags() {
- uint32_t result = 0;
- if (_cpuid_info.std_cpuid1_edx.bits.cmpxchg8 != 0)
- result |= CPU_CX8;
- if (_cpuid_info.std_cpuid1_edx.bits.cmov != 0)
- result |= CPU_CMOV;
- if (_cpuid_info.std_cpuid1_edx.bits.fxsr != 0 || is_amd() &&
- _cpuid_info.ext_cpuid1_edx.bits.fxsr != 0)
- result |= CPU_FXSR;
- // HT flag is set for multi-core processors also.
- if (threads_per_core() > 1)
- result |= CPU_HT;
- if (_cpuid_info.std_cpuid1_edx.bits.mmx != 0 || is_amd() &&
- _cpuid_info.ext_cpuid1_edx.bits.mmx != 0)
- result |= CPU_MMX;
- if (is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow != 0)
- result |= CPU_3DNOW;
- if (_cpuid_info.std_cpuid1_edx.bits.sse != 0)
- result |= CPU_SSE;
- if (_cpuid_info.std_cpuid1_edx.bits.sse2 != 0)
- result |= CPU_SSE2;
- if (_cpuid_info.std_cpuid1_ecx.bits.sse3 != 0)
- result |= CPU_SSE3;
- if (_cpuid_info.std_cpuid1_ecx.bits.ssse3 != 0)
- result |= CPU_SSSE3;
- if (is_amd() && _cpuid_info.ext_cpuid1_ecx.bits.sse4a != 0)
- result |= CPU_SSE4A;
- if (_cpuid_info.std_cpuid1_ecx.bits.sse4_1 != 0)
- result |= CPU_SSE4_1;
- if (_cpuid_info.std_cpuid1_ecx.bits.sse4_2 != 0)
- result |= CPU_SSE4_2;
- return result;
- }
-
- static void get_processor_features();
-
-public:
- // Offsets for cpuid asm stub
- static ByteSize std_cpuid0_offset() { return byte_offset_of(CpuidInfo, std_max_function); }
- static ByteSize std_cpuid1_offset() { return byte_offset_of(CpuidInfo, std_cpuid1_eax); }
- static ByteSize dcp_cpuid4_offset() { return byte_offset_of(CpuidInfo, dcp_cpuid4_eax); }
- static ByteSize ext_cpuid1_offset() { return byte_offset_of(CpuidInfo, ext_cpuid1_eax); }
- static ByteSize ext_cpuid5_offset() { return byte_offset_of(CpuidInfo, ext_cpuid5_eax); }
- static ByteSize ext_cpuid8_offset() { return byte_offset_of(CpuidInfo, ext_cpuid8_eax); }
-
- // Initialization
- static void initialize();
-
- // Asserts
- static void assert_is_initialized() {
- assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
- }
-
- //
- // Processor family:
- // 3 - 386
- // 4 - 486
- // 5 - Pentium
- // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
- // Pentium M, Core Solo, Core Duo, Core2 Duo
- // family 6 model: 9, 13, 14, 15
- // 0x0f - Pentium 4, Opteron
- //
- // Note: The cpu family should be used to select between
- // instruction sequences which are valid on all Intel
- // processors. Use the feature test functions below to
- // determine whether a particular instruction is supported.
- //
- static int cpu_family() { return _cpu;}
- static bool is_P6() { return cpu_family() >= 6; }
-
- static bool is_amd() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
- static bool is_intel() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
-
- static uint cores_per_cpu() {
- uint result = 1;
- if (is_intel()) {
- result = (_cpuid_info.dcp_cpuid4_eax.bits.cores_per_cpu + 1);
- } else if (is_amd()) {
- result = (_cpuid_info.ext_cpuid8_ecx.bits.cores_per_cpu + 1);
- }
- return result;
- }
-
- static uint threads_per_core() {
- uint result = 1;
- if (_cpuid_info.std_cpuid1_edx.bits.ht != 0) {
- result = _cpuid_info.std_cpuid1_ebx.bits.threads_per_cpu /
- cores_per_cpu();
- }
- return result;
- }
-
- static intx L1_data_cache_line_size() {
- intx result = 0;
- if (is_intel()) {
- result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
- } else if (is_amd()) {
- result = _cpuid_info.ext_cpuid5_ecx.bits.L1_line_size;
- }
- if (result < 32) // not defined ?
- result = 32; // 32 bytes by default for other x64
- return result;
- }
-
- //
- // Feature identification
- //
- static bool supports_cpuid() { return _cpuFeatures != 0; }
- static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
- static bool supports_cmov() { return (_cpuFeatures & CPU_CMOV) != 0; }
- static bool supports_fxsr() { return (_cpuFeatures & CPU_FXSR) != 0; }
- static bool supports_ht() { return (_cpuFeatures & CPU_HT) != 0; }
- static bool supports_mmx() { return (_cpuFeatures & CPU_MMX) != 0; }
- static bool supports_sse() { return (_cpuFeatures & CPU_SSE) != 0; }
- static bool supports_sse2() { return (_cpuFeatures & CPU_SSE2) != 0; }
- static bool supports_sse3() { return (_cpuFeatures & CPU_SSE3) != 0; }
- static bool supports_ssse3() { return (_cpuFeatures & CPU_SSSE3)!= 0; }
- static bool supports_sse4_1() { return (_cpuFeatures & CPU_SSE4_1) != 0; }
- static bool supports_sse4_2() { return (_cpuFeatures & CPU_SSE4_2) != 0; }
- //
- // AMD features
- //
- static bool supports_3dnow() { return (_cpuFeatures & CPU_3DNOW) != 0; }
- static bool supports_mmx_ext() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; }
- static bool supports_3dnow2() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.tdnow2 != 0; }
- static bool supports_sse4a() { return (_cpuFeatures & CPU_SSE4A) != 0; }
-
- static bool supports_compare_and_exchange() { return true; }
-
- static const char* cpu_features() { return _features_str; }
-
- static intx allocate_prefetch_distance() {
- // This method should be called before allocate_prefetch_style().
- //
- // Hardware prefetching (distance/size in bytes):
- // Pentium 4 - 256 / 128
- // Opteron - 128 / 64 only when 2 sequential cache lines accessed
- // Core - 128 / 64
- //
- // Software prefetching (distance in bytes / instruction with best score):
- // Pentium 4 - 512 / prefetchnta
- // Opteron - 256 / prefetchnta
- // Core - 256 / prefetchnta
- // It will be used only when AllocatePrefetchStyle > 0
-
- intx count = AllocatePrefetchDistance;
- if (count < 0) { // default ?
- if (is_amd()) { // AMD
- count = 256; // Opteron
- } else { // Intel
- if (cpu_family() == 6) {
- count = 256;// Pentium M, Core, Core2
- } else {
- count = 512;// Pentium 4
- }
- }
- }
- return count;
- }
- static intx allocate_prefetch_style() {
- assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
- // Return 0 if AllocatePrefetchDistance was not defined.
- return AllocatePrefetchDistance > 0 ? AllocatePrefetchStyle : 0;
- }
-
- // Prefetch interval for gc copy/scan == 9 dcache lines. Derived from
- // 50-warehouse specjbb runs on a 2-way 1.8ghz opteron using a 4gb heap.
- // Tested intervals from 128 to 2048 in increments of 64 == one cache line.
- // 256 bytes (4 dcache lines) was the nearest runner-up to 576.
-
- // gc copy/scan is disabled if prefetchw isn't supported, because
- // Prefetch::write emits an inlined prefetchw on Linux.
- // Do not use the 3dnow prefetchw instruction. It isn't supported on em64t.
- // The used prefetcht0 instruction works for both amd64 and em64t.
- static intx prefetch_copy_interval_in_bytes() {
- intx interval = PrefetchCopyIntervalInBytes;
- return interval >= 0 ? interval : 576;
- }
- static intx prefetch_scan_interval_in_bytes() {
- intx interval = PrefetchScanIntervalInBytes;
- return interval >= 0 ? interval : 576;
- }
- static intx prefetch_fields_ahead() {
- intx count = PrefetchFieldsAhead;
- return count >= 0 ? count : 1;
- }
-};
--- a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -299,14 +299,18 @@
}
+#endif // AMD64
+
bool os::supports_sse() {
+#ifdef AMD64
+ return true;
+#else
if (sse_status == SSE_UNKNOWN)
check_for_sse_support();
return sse_status == SSE_SUPPORTED;
+#endif // AMD64
}
-#endif // AMD64
-
bool os::is_allocatable(size_t bytes) {
#ifdef AMD64
return true;
--- a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -41,8 +41,9 @@
static void fence_bootstrap ();
static void setup_fpu();
+#endif // AMD64
+
static bool supports_sse();
-#endif // AMD64
static bool is_allocatable(size_t bytes);
--- a/hotspot/src/share/vm/includeDB_core Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/share/vm/includeDB_core Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
//
-// Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
+// Copyright 1997-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
@@ -176,7 +176,7 @@
arguments.cpp oop.inline.hpp
arguments.cpp os_<os_family>.inline.hpp
arguments.cpp universe.inline.hpp
-arguments.cpp vm_version_<arch_model>.hpp
+arguments.cpp vm_version_<arch>.hpp
arguments.hpp java.hpp
arguments.hpp perfData.hpp
@@ -241,7 +241,7 @@
assembler.hpp register_<arch>.hpp
assembler.hpp relocInfo.hpp
assembler.hpp top.hpp
-assembler.hpp vm_version_<arch_model>.hpp
+assembler.hpp vm_version_<arch>.hpp
assembler.inline.hpp assembler.hpp
assembler.inline.hpp codeBuffer.hpp
@@ -280,7 +280,7 @@
atomic_<os_arch>.inline.hpp atomic.hpp
atomic_<os_arch>.inline.hpp os.hpp
-atomic_<os_arch>.inline.hpp vm_version_<arch_model>.hpp
+atomic_<os_arch>.inline.hpp vm_version_<arch>.hpp
// attachListener is jck optional, put cpp deps in includeDB_features
@@ -2176,7 +2176,7 @@
interpreterRuntime.cpp threadCritical.hpp
interpreterRuntime.cpp universe.inline.hpp
interpreterRuntime.cpp vmSymbols.hpp
-interpreterRuntime.cpp vm_version_<arch_model>.hpp
+interpreterRuntime.cpp vm_version_<arch>.hpp
interpreterRuntime.hpp bytecode.hpp
interpreterRuntime.hpp frame.inline.hpp
@@ -2279,7 +2279,7 @@
java.cpp universe.hpp
java.cpp vmError.hpp
java.cpp vm_operations.hpp
-java.cpp vm_version_<arch_model>.hpp
+java.cpp vm_version_<arch>.hpp
java.cpp vtune.hpp
java.hpp os.hpp
@@ -3485,7 +3485,7 @@
register_<arch>.cpp register_<arch>.hpp
register_<arch>.hpp register.hpp
-register_<arch>.hpp vm_version_<arch_model>.hpp
+register_<arch>.hpp vm_version_<arch>.hpp
registerMap.hpp globalDefinitions.hpp
registerMap.hpp register_<arch>.hpp
@@ -3835,7 +3835,7 @@
statSampler.cpp statSampler.hpp
statSampler.cpp systemDictionary.hpp
statSampler.cpp vmSymbols.hpp
-statSampler.cpp vm_version_<arch_model>.hpp
+statSampler.cpp vm_version_<arch>.hpp
statSampler.hpp perfData.hpp
statSampler.hpp task.hpp
@@ -4579,22 +4579,22 @@
vm_version.cpp arguments.hpp
vm_version.cpp oop.inline.hpp
vm_version.cpp universe.hpp
-vm_version.cpp vm_version_<arch_model>.hpp
+vm_version.cpp vm_version_<arch>.hpp
vm_version.hpp allocation.hpp
vm_version.hpp ostream.hpp
-vm_version_<arch_model>.cpp assembler_<arch>.inline.hpp
-vm_version_<arch_model>.cpp java.hpp
-vm_version_<arch_model>.cpp os_<os_family>.inline.hpp
-vm_version_<arch_model>.cpp resourceArea.hpp
-vm_version_<arch_model>.cpp stubCodeGenerator.hpp
-vm_version_<arch_model>.cpp vm_version_<arch_model>.hpp
-
-vm_version_<arch_model>.hpp globals_extension.hpp
-vm_version_<arch_model>.hpp vm_version.hpp
-
-vm_version_<os_arch>.cpp vm_version_<arch_model>.hpp
+vm_version_<arch>.cpp assembler_<arch>.inline.hpp
+vm_version_<arch>.cpp java.hpp
+vm_version_<arch>.cpp os_<os_family>.inline.hpp
+vm_version_<arch>.cpp resourceArea.hpp
+vm_version_<arch>.cpp stubCodeGenerator.hpp
+vm_version_<arch>.cpp vm_version_<arch>.hpp
+
+vm_version_<arch>.hpp globals_extension.hpp
+vm_version_<arch>.hpp vm_version.hpp
+
+vm_version_<os_arch>.cpp vm_version_<arch>.hpp
vmreg.cpp assembler.hpp
vmreg.cpp vmreg.hpp
--- a/hotspot/src/share/vm/opto/escape.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/share/vm/opto/escape.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -756,6 +756,16 @@
} else {
break;
}
+ } else if (result->Opcode() == Op_SCMemProj) {
+ assert(result->in(0)->is_LoadStore(), "sanity");
+ const Type *at = phase->type(result->in(0)->in(MemNode::Address));
+ if (at != Type::TOP) {
+ assert (at->isa_ptr() != NULL, "pointer type required.");
+ int idx = C->get_alias_index(at->is_ptr());
+ assert(idx != alias_idx, "Object is not scalar replaceable if a LoadStore node access its field");
+ break;
+ }
+ result = result->in(0)->in(MemNode::Memory);
}
}
if (result->is_Phi()) {
--- a/hotspot/src/share/vm/opto/macro.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/share/vm/opto/macro.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -250,6 +250,15 @@
assert(adr_idx == Compile::AliasIdxRaw, "address must match or be raw");
}
mem = mem->in(MemNode::Memory);
+ } else if (mem->Opcode() == Op_SCMemProj) {
+ assert(mem->in(0)->is_LoadStore(), "sanity");
+ const TypePtr* atype = mem->in(0)->in(MemNode::Address)->bottom_type()->is_ptr();
+ int adr_idx = Compile::current()->get_alias_index(atype);
+ if (adr_idx == alias_idx) {
+ assert(false, "Object is not scalar replaceable if a LoadStore node access its field");
+ return NULL;
+ }
+ mem = mem->in(0)->in(MemNode::Memory);
} else {
return mem;
}
@@ -329,8 +338,15 @@
return NULL;
}
values.at_put(j, val);
+ } else if (val->Opcode() == Op_SCMemProj) {
+ assert(val->in(0)->is_LoadStore(), "sanity");
+ assert(false, "Object is not scalar replaceable if a LoadStore node access its field");
+ return NULL;
} else {
+#ifdef ASSERT
+ val->dump();
assert(false, "unknown node on this path");
+#endif
return NULL; // unknown node on this path
}
}
--- a/hotspot/src/share/vm/opto/matcher.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/share/vm/opto/matcher.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1707,11 +1707,18 @@
void Matcher::find_shared( Node *n ) {
// Allocate stack of size C->unique() * 2 to avoid frequent realloc
MStack mstack(C->unique() * 2);
+ // Mark nodes as address_visited if they are inputs to an address expression
+ VectorSet address_visited(Thread::current()->resource_area());
mstack.push(n, Visit); // Don't need to pre-visit root node
while (mstack.is_nonempty()) {
n = mstack.node(); // Leave node on stack
Node_State nstate = mstack.state();
+ uint nop = n->Opcode();
if (nstate == Pre_Visit) {
+ if (address_visited.test(n->_idx)) { // Visited in address already?
+ // Flag as visited and shared now.
+ set_visited(n);
+ }
if (is_visited(n)) { // Visited already?
// Node is shared and has no reason to clone. Flag it as shared.
// This causes it to match into a register for the sharing.
@@ -1726,7 +1733,7 @@
set_visited(n); // Flag as visited now
bool mem_op = false;
- switch( n->Opcode() ) { // Handle some opcodes special
+ switch( nop ) { // Handle some opcodes special
case Op_Phi: // Treat Phis as shared roots
case Op_Parm:
case Op_Proj: // All handled specially during matching
@@ -1887,34 +1894,51 @@
// to have a single use so force sharing here.
set_shared(m->in(AddPNode::Base)->in(1));
}
+
+ // Some inputs for address expression are not put on stack
+ // to avoid marking them as shared and forcing them into register
+ // if they are used only in address expressions.
+ // But they should be marked as shared if there are other uses
+ // besides address expressions.
+
Node *off = m->in(AddPNode::Offset);
- if( off->is_Con() ) {
- set_visited(m); // Flag as visited now
+ if( off->is_Con() &&
+ // When there are other uses besides address expressions
+ // put it on stack and mark as shared.
+ !is_visited(m) ) {
+ address_visited.test_set(m->_idx); // Flag as address_visited
Node *adr = m->in(AddPNode::Address);
// Intel, ARM and friends can handle 2 adds in addressing mode
if( clone_shift_expressions && adr->is_AddP() &&
// AtomicAdd is not an addressing expression.
// Cheap to find it by looking for screwy base.
- !adr->in(AddPNode::Base)->is_top() ) {
- set_visited(adr); // Flag as visited now
+ !adr->in(AddPNode::Base)->is_top() &&
+ // Are there other uses besides address expressions?
+ !is_visited(adr) ) {
+ address_visited.set(adr->_idx); // Flag as address_visited
Node *shift = adr->in(AddPNode::Offset);
// Check for shift by small constant as well
if( shift->Opcode() == Op_LShiftX && shift->in(2)->is_Con() &&
- shift->in(2)->get_int() <= 3 ) {
- set_visited(shift); // Flag as visited now
+ shift->in(2)->get_int() <= 3 &&
+ // Are there other uses besides address expressions?
+ !is_visited(shift) ) {
+ address_visited.set(shift->_idx); // Flag as address_visited
mstack.push(shift->in(2), Visit);
+ Node *conv = shift->in(1);
#ifdef _LP64
// Allow Matcher to match the rule which bypass
// ConvI2L operation for an array index on LP64
// if the index value is positive.
- if( shift->in(1)->Opcode() == Op_ConvI2L &&
- shift->in(1)->as_Type()->type()->is_long()->_lo >= 0 ) {
- set_visited(shift->in(1)); // Flag as visited now
- mstack.push(shift->in(1)->in(1), Pre_Visit);
+ if( conv->Opcode() == Op_ConvI2L &&
+ conv->as_Type()->type()->is_long()->_lo >= 0 &&
+ // Are there other uses besides address expressions?
+ !is_visited(conv) ) {
+ address_visited.set(conv->_idx); // Flag as address_visited
+ mstack.push(conv->in(1), Pre_Visit);
} else
#endif
- mstack.push(shift->in(1), Pre_Visit);
+ mstack.push(conv, Pre_Visit);
} else {
mstack.push(shift, Pre_Visit);
}
--- a/hotspot/src/share/vm/opto/memnode.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/hotspot/src/share/vm/opto/memnode.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1066,11 +1066,11 @@
break;
}
}
- LoadNode* load = NULL;
- if (allocation != NULL && base->in(load_index)->is_Load()) {
- load = base->in(load_index)->as_Load();
- }
- if (load != NULL && in(Memory)->is_Phi() && in(Memory)->in(0) == base->in(0)) {
+ bool has_load = ( allocation != NULL &&
+ (base->in(load_index)->is_Load() ||
+ base->in(load_index)->is_DecodeN() &&
+ base->in(load_index)->in(1)->is_Load()) );
+ if (has_load && in(Memory)->is_Phi() && in(Memory)->in(0) == base->in(0)) {
// Push the loads from the phi that comes from valueOf up
// through it to allow elimination of the loads and the recovery
// of the original value.
@@ -1106,11 +1106,20 @@
result->set_req(load_index, in2);
return result;
}
- } else if (base->is_Load()) {
+ } else if (base->is_Load() ||
+ base->is_DecodeN() && base->in(1)->is_Load()) {
+ if (base->is_DecodeN()) {
+ // Get LoadN node which loads cached Integer object
+ base = base->in(1);
+ }
// Eliminate the load of Integer.value for integers from the cache
// array by deriving the value from the index into the array.
// Capture the offset of the load and then reverse the computation.
Node* load_base = base->in(Address)->in(AddPNode::Base);
+ if (load_base->is_DecodeN()) {
+ // Get LoadN node which loads IntegerCache.cache field
+ load_base = load_base->in(1);
+ }
if (load_base != NULL) {
Compile::AliasType* atp = phase->C->alias_type(load_base->adr_type());
intptr_t cache_offset;
--- a/jaxp/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/jaxp/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
96fe28d4a9131e1a97bfe00f779e5626cd09c4d0 jdk7-b43
b203df0741af3eb08687bc5eb798bac87363758d jdk7-b44
0f113667880d335cfa2c35721b1b45144fb757f5 jdk7-b45
+b2271877894af809b7703767fe8d4e38591a02a2 jdk7-b46
+d711ad1954b294957737ea386cfd4d3c05028a36 jdk7-b47
--- a/jaxws/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/jaxws/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
1ad2f51564db6ca4c6d95760cf13fb083d3dec94 jdk7-b43
344485a03674b6950a7a23d01a6efb8055afb6ec jdk7-b44
dea7753d713936c5b6fd942a91811b0676537fd0 jdk7-b45
+af4a3eeb7812a5d09a241c50b51b3c648a9d45c1 jdk7-b46
+223011570edbd49bb0fe51cdeb2089f95d305267 jdk7-b47
--- a/jdk/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
50c67678b0d180063ade199d398b67a54063fa7f jdk7-b43
d8eb2738db6b148911177d9bcfe888109b7f2f71 jdk7-b44
527b426497a259d0605d069e3930e838948531a6 jdk7-b45
+4b03e27a44090d1f646af28dc58f9ead827e24c7 jdk7-b46
+b4ac413b1f129eeef0acab3f31081c1b7dfe3b27 jdk7-b47
--- a/jdk/make/sun/awt/FILES_c_windows.gmk Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/sun/awt/FILES_c_windows.gmk Thu Feb 26 14:25:55 2009 -0800
@@ -153,7 +153,6 @@
awt_Menu.cpp \
awt_MenuBar.cpp \
awt_MenuItem.cpp \
- awt_MMStub.cpp \
awt_MouseEvent.cpp \
awt_Object.cpp \
awt_Palette.cpp \
@@ -171,7 +170,6 @@
awt_TextComponent.cpp \
awt_TextField.cpp \
awt_Toolkit.cpp \
- awt_Unicode.cpp \
awt_Window.cpp \
awt_Win32GraphicsEnv.cpp \
awt_Win32GraphicsDevice.cpp \
@@ -202,6 +200,4 @@
ThemeReader.cpp \
ComCtl32Util.cpp \
initIDs.cpp \
- awt_dlls.cpp \
- UnicowsLoader.cpp \
MouseInfo.cpp
--- a/jdk/make/sun/awt/Makefile Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/sun/awt/Makefile Thu Feb 26 14:25:55 2009 -0800
@@ -47,7 +47,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)
@@ -247,8 +247,14 @@
ifeq ($(PLATFORM), windows)
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
OTHER_LDLIBS = kernel32.lib user32.lib gdi32.lib winspool.lib \
- imm32.lib ole32.lib uuid.lib $(JVMLIB) \
- shell32.lib
+ imm32.lib ole32.lib uuid.lib shell32.lib \
+ comdlg32.lib winmm.lib comctl32.lib delayimp.lib \
+ $(JVMLIB) \
+ /DELAYLOAD:user32.dll /DELAYLOAD:gdi32.dll \
+ /DELAYLOAD:shell32.dll /DELAYLOAD:winmm.dll \
+ /DELAYLOAD:winspool.drv /DELAYLOAD:imm32.dll \
+ /DELAYLOAD:ole32.dll /DELAYLOAD:comdlg32.dll \
+ /DELAYLOAD:comctl32.dll
clean:: awt.clean
--- a/jdk/make/sun/awt/make.depend Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/sun/awt/make.depend Thu Feb 26 14:25:55 2009 -0800
@@ -14,141 +14,135 @@
$(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.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_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_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
-$(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
-$(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.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_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
-$(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.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_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_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
-$(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.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_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_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
-$(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.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_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_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
-$(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.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_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.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.h ../../../src/windows/native/sun/windows/awt_Color.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.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_MouseEvent.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_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
-$(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.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
-$(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.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_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_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_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
-$(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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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_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
-$(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.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_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_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
-$(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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/stdhdrs.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_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_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_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
-$(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_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_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_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_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
-$(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_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_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_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
-$(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_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
-$(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_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_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_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_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
-$(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_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_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_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
-$(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_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.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_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_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
-$(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.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_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/stdhdrs.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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
-$(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.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_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_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
-$(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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
-$(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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
-$(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.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_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_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
-$(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_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_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_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
-$(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_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_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_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
-$(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_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_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_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
$(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
-$(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_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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.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
-$(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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.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
-$(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.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_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_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
-$(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.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_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_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
$(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.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_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
-$(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.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_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_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
-$(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.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_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_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
-$(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.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_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_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_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
-$(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.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_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_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_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
-$(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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Rectangle.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
-$(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.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_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_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
-$(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.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_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_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
-$(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.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_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_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_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
-$(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.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_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_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
-$(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.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_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_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_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
-$(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_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_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_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_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
-$(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_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_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_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
-$(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.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_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_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
-$(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.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_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_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_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
-$(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.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_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_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
-$(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.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_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_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_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
$(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
@@ -170,9 +164,9 @@
$(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)/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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.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
-$(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.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_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_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
$(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
@@ -182,7 +176,7 @@
$(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)/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.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_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_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
$(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
@@ -192,15 +186,15 @@
$(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)/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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.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
$(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)/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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.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/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
-$(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.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_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_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
$(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
@@ -216,7 +210,7 @@
$(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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.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
$(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
@@ -240,19 +234,19 @@
$(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)/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.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_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
-$(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.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_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_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_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
-$(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.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_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_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
-$(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_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_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
$(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)/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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.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
@@ -282,9 +276,9 @@
$(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.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_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_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
-$(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.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.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
$(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
@@ -320,13 +314,13 @@
$(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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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
$(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
@@ -334,8 +328,6 @@
$(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)/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
@@ -352,6 +344,6 @@
$(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:: ../../../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.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.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.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_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_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_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
--- a/jdk/make/sun/jawt/make.depend Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/sun/jawt/make.depend Thu Feb 26 14:25:55 2009 -0800
@@ -1,1 +1,1 @@
-$(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
+$(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/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_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_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/stdhdrs.h
--- a/jdk/make/sun/splashscreen/Makefile Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/sun/splashscreen/Makefile Thu Feb 26 14:25:55 2009 -0800
@@ -67,7 +67,7 @@
OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
else # PLATFORM
CFLAGS += -DWITH_WIN32
- OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib
+ OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib /DELAYLOAD:user32.dll
#$(JVMLIB) $(OBJDIR)/../../jpeg/$(OBJDIRNAME)/jpeg$(SUFFIX).lib
endif # PLATFORM
@@ -85,13 +85,6 @@
CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen -I$(SHARE_SRC)/native/$(PKGDIR)/splashscreen
CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/image/jpeg -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
-ifeq ($(PLATFORM), linux)
- ifeq ($(ARCH_DATA_MODEL), 64)
- # 64-bit gcc has problems compiling MMX instructions.
- # Google it for more details. Possibly the newer versions of
- # the PNG-library and/or the new compiler will not need this
- # option in the future.
- CPPFLAGS += -DPNG_NO_MMX_CODE
- endif
-endif
-
+# Shun the less than portable MMX assembly code in pnggccrd.c,
+# and use alternative implementations in C.
+CPPFLAGS += -DPNG_NO_MMX_CODE
--- a/jdk/make/sun/xawt/mapfile-vers Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/sun/xawt/mapfile-vers Thu Feb 26 14:25:55 2009 -0800
@@ -151,6 +151,7 @@
Java_sun_awt_X11_XRobotPeer_mouseReleaseImpl;
Java_sun_awt_X11_XRobotPeer_mouseWheelImpl;
Java_sun_awt_X11_XRobotPeer_setup;
+ Java_sun_awt_X11_XRobotPeer_getNumberOfButtonsImpl;
Java_java_awt_Component_initIDs;
Java_java_awt_Container_initIDs;
Java_java_awt_Button_initIDs;
@@ -288,6 +289,7 @@
Java_sun_awt_X11_XlibWrapper_XGetIconSizes;
Java_sun_awt_X11_XlibWrapper_XKeycodeToKeysym;
Java_sun_awt_X11_XlibWrapper_XKeysymToKeycode;
+ Java_sun_awt_X11_XlibWrapper_XQueryKeymap;
Java_sun_awt_X11_XlibWrapper_XGetModifierMapping;
Java_sun_awt_X11_XlibWrapper_XFreeModifiermap;
Java_sun_awt_X11_XlibWrapper_XChangeActivePointerGrab;
--- a/jdk/make/tools/sharing/classlist.linux Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/tools/sharing/classlist.linux Thu Feb 26 14:25:55 2009 -0800
@@ -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
--- a/jdk/make/tools/sharing/classlist.solaris Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/tools/sharing/classlist.solaris Thu Feb 26 14:25:55 2009 -0800
@@ -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
--- a/jdk/make/tools/sharing/classlist.windows Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/make/tools/sharing/classlist.windows Thu Feb 26 14:25:55 2009 -0800
@@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/com/sun/awt/AWTUtilities.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,104 @@
+/*
+ * 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 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);
+ }
+}
+
--- a/jdk/src/share/classes/java/awt/Choice.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Choice.java Thu Feb 26 14:25:55 2009 -0800
@@ -228,7 +228,7 @@
pItems.insertElementAt(item, index);
ChoicePeer peer = (ChoicePeer)this.peer;
if (peer != null) {
- peer.addItem(item, index);
+ peer.add(item, index);
}
// no selection or selection shifted up
if (selectedIndex < 0 || selectedIndex >= index) {
--- a/jdk/src/share/classes/java/awt/Component.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Component.java Thu Feb 26 14:25:55 2009 -0800
@@ -65,8 +65,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;
@@ -758,22 +760,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
@@ -793,6 +799,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
@@ -1306,7 +1345,7 @@
enabled = true;
ComponentPeer peer = this.peer;
if (peer != null) {
- peer.enable();
+ peer.setEnabled(true);
if (visible) {
updateCursorImmediately();
}
@@ -1355,7 +1394,7 @@
}
ComponentPeer peer = this.peer;
if (peer != null) {
- peer.disable();
+ peer.setEnabled(false);
if (visible) {
updateCursorImmediately();
}
@@ -1447,7 +1486,7 @@
mixOnShowing();
ComponentPeer peer = this.peer;
if (peer != null) {
- peer.show();
+ peer.setVisible(true);
createHierarchyEvents(HierarchyEvent.HIERARCHY_CHANGED,
this, parent,
HierarchyEvent.SHOWING_CHANGED,
@@ -1517,7 +1556,7 @@
}
ComponentPeer peer = this.peer;
if (peer != null) {
- peer.hide();
+ peer.setVisible(false);
createHierarchyEvents(HierarchyEvent.HIERARCHY_CHANGED,
this, parent,
HierarchyEvent.SHOWING_CHANGED,
@@ -2414,7 +2453,7 @@
if (dim == null || !(isPreferredSizeSet() || isValid())) {
synchronized (getTreeLock()) {
prefSize = (peer != null) ?
- peer.preferredSize() :
+ peer.getPreferredSize() :
getMinimumSize();
dim = prefSize;
}
@@ -2484,7 +2523,7 @@
if (dim == null || !(isMinimumSizeSet() || isValid())) {
synchronized (getTreeLock()) {
minSize = (peer != null) ?
- peer.minimumSize() :
+ peer.getMinimumSize() :
size();
dim = minSize;
}
@@ -3171,7 +3210,7 @@
private Insets getInsets_NoClientCode() {
ComponentPeer peer = this.peer;
if (peer instanceof ContainerPeer) {
- return (Insets)((ContainerPeer)peer).insets().clone();
+ return (Insets)((ContainerPeer)peer).getInsets().clone();
}
return new Insets(0, 0, 0, 0);
}
@@ -6643,7 +6682,6 @@
}
if (!isAddNotifyComplete) {
- addPropertyChangeListener("opaque", opaquePropertyChangeListener);
mixOnShowing();
}
@@ -6722,7 +6760,7 @@
// Hide peer first to stop system events such as cursor moves.
if (visible) {
- p.hide();
+ p.setVisible(false);
}
peer = null; // Stop peer updates.
@@ -6735,9 +6773,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 ||
@@ -9401,10 +9441,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;
}
/**
@@ -9413,6 +9452,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) {
@@ -9422,22 +9469,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));
}
}
@@ -9460,7 +9516,7 @@
Point curLocation = getLocation();
for (Container parent = getContainer();
- parent != null;
+ parent != null && !(parent instanceof Window);
parent = parent.getContainer())
{
curLocation.x += parent.getX();
@@ -9486,7 +9542,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) {
@@ -9498,7 +9575,7 @@
return nextAbove < 0 ? -1 : nextAbove;
}
- private int getSiblingIndexBelow() {
+ final int getSiblingIndexBelow() {
checkTreeLock();
Container parent = getContainer();
if (parent == null) {
@@ -9510,6 +9587,11 @@
return nextBelow >= parent.getComponentCount() ? -1 : nextBelow;
}
+ final boolean isNonOpaqueForMixing() {
+ return mixingCutoutRegion != null &&
+ mixingCutoutRegion.isEmpty();
+ }
+
private Region calculateCurrentShape() {
checkTreeLock();
Region s = getNormalShape();
@@ -9532,8 +9614,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());
}
}
@@ -9558,6 +9640,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)) {
@@ -9576,16 +9661,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();
}
@@ -9599,12 +9722,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();
+ }
}
}
@@ -9613,11 +9736,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();
}
@@ -9633,11 +9756,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) {
@@ -9653,8 +9778,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);
@@ -9664,21 +9789,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 ********************************
}
--- a/jdk/src/share/classes/java/awt/Container.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Container.java Thu Feb 26 14:25:55 2009 -0800
@@ -343,7 +343,7 @@
ComponentPeer peer = this.peer;
if (peer instanceof ContainerPeer) {
ContainerPeer cpeer = (ContainerPeer)peer;
- return (Insets)cpeer.insets().clone();
+ return (Insets)cpeer.getInsets().clone();
}
return new Insets(0, 0, 0, 0);
}
@@ -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;
}
@@ -3861,6 +3861,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());
}
@@ -3878,6 +3900,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()) {
@@ -3906,10 +3937,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();
@@ -3931,7 +3971,7 @@
if (comp.isVisible()) {
ComponentPeer peer = comp.getPeer();
if (peer != null) {
- peer.show();
+ peer.setVisible(true);
}
}
}
@@ -3952,7 +3992,7 @@
if (comp.isVisible()) {
ComponentPeer peer = comp.getPeer();
if (peer != null) {
- peer.hide();
+ peer.setVisible(false);
}
}
}
@@ -4000,6 +4040,10 @@
mixingLog.fine("this = " + this);
}
+ if (!isMixingNeeded()) {
+ return;
+ }
+
boolean isLightweight = isLightweight();
if (isLightweight && isRecursivelyVisibleUpToHeavyweightContainer()) {
@@ -4034,6 +4078,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();
@@ -4044,7 +4091,18 @@
}
recursiveRelocateHeavyweightChildren(origin);
+
+ if (!isMixingNeeded) {
+ return;
+ }
+
+ recursiveApplyCurrentShape();
}
+
+ if (!isMixingNeeded) {
+ return;
+ }
+
super.mixOnReshaping();
}
}
@@ -4057,6 +4115,10 @@
"; oldZ=" + oldZorder + "; newZ=" + newZorder);
}
+ if (!isMixingNeeded()) {
+ return;
+ }
+
boolean becameHigher = newZorder < oldZorder;
if (becameHigher && isLightweight() && hasHeavyweightDescendants()) {
@@ -4073,10 +4135,18 @@
mixingLog.fine("this = " + this);
}
+ if (!isMixingNeeded()) {
+ return;
+ }
+
if (hasHeavyweightDescendants()) {
recursiveApplyCurrentShape();
}
+ if (isLightweight() && isNonOpaqueForMixing()) {
+ subtractAndApplyShapeBelowMe();
+ }
+
super.mixOnValidating();
}
}
--- a/jdk/src/share/classes/java/awt/Dialog.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Dialog.java Thu Feb 26 14:25:55 2009 -0800
@@ -941,7 +941,7 @@
// does not invoke the super.show(). So wried... :(
mixOnShowing();
- peer.show(); // now guaranteed never to block
+ peer.setVisible(true); // now guaranteed never to block
if (isModalBlocked()) {
modalBlocker.toFront();
}
--- a/jdk/src/share/classes/java/awt/EventDispatchThread.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/EventDispatchThread.java Thu Feb 26 14:25:55 2009 -0800
@@ -300,119 +300,19 @@
}
// Can get and throw only unchecked exceptions
catch (RuntimeException e) {
- processException(e, modalFiltersCount > 0);
+ processException(e);
} catch (Error e) {
- processException(e, modalFiltersCount > 0);
+ processException(e);
}
return true;
}
- private void processException(Throwable e, boolean isModal) {
+ private void processException(Throwable e) {
if (eventLog.isLoggable(Level.FINE)) {
- eventLog.log(Level.FINE, "Processing exception: " + e +
- ", isModal = " + isModal);
- }
- if (!handleException(e)) {
- // See bug ID 4499199.
- // If we are in a modal dialog, we cannot throw
- // an exception for the ThreadGroup to handle (as added
- // in RFE 4063022). If we did, the message pump of
- // the modal dialog would be interrupted.
- // We instead choose to handle the exception ourselves.
- // It may be useful to add either a runtime flag or API
- // later if someone would like to instead dispose the
- // dialog and allow the thread group to handle it.
- if (isModal) {
- System.err.println(
- "Exception occurred during event dispatching:");
- e.printStackTrace();
- } else if (e instanceof RuntimeException) {
- throw (RuntimeException)e;
- } else if (e instanceof Error) {
- throw (Error)e;
- }
+ eventLog.log(Level.FINE, "Processing exception: " + e);
}
- }
-
- private static final String handlerPropName = "sun.awt.exception.handler";
- private static String handlerClassName = null;
- private static String NO_HANDLER = new String();
-
- /**
- * Handles an exception thrown in the event-dispatch thread.
- *
- * <p> If the system property "sun.awt.exception.handler" is defined, then
- * when this method is invoked it will attempt to do the following:
- *
- * <ol>
- * <li> Load the class named by the value of that property, using the
- * current thread's context class loader,
- * <li> Instantiate that class using its zero-argument constructor,
- * <li> Find the resulting handler object's <tt>public void handle</tt>
- * method, which should take a single argument of type
- * <tt>Throwable</tt>, and
- * <li> Invoke the handler's <tt>handle</tt> method, passing it the
- * <tt>thrown</tt> argument that was passed to this method.
- * </ol>
- *
- * If any of the first three steps fail then this method will return
- * <tt>false</tt> and all following invocations of this method will return
- * <tt>false</tt> immediately. An exception thrown by the handler object's
- * <tt>handle</tt> will be caught, and will cause this method to return
- * <tt>false</tt>. If the handler's <tt>handle</tt> method is successfully
- * invoked, then this method will return <tt>true</tt>. This method will
- * never throw any sort of exception.
- *
- * <p> <i>Note:</i> This method is a temporary hack to work around the
- * absence of a real API that provides the ability to replace the
- * event-dispatch thread. The magic "sun.awt.exception.handler" property
- * <i>will be removed</i> in a future release.
- *
- * @param thrown The Throwable that was thrown in the event-dispatch
- * thread
- *
- * @return <tt>false</tt> if any of the above steps failed, otherwise
- * <tt>true</tt>
- */
- private boolean handleException(Throwable thrown) {
-
- try {
-
- if (handlerClassName == NO_HANDLER) {
- return false; /* Already tried, and failed */
- }
-
- /* Look up the class name */
- if (handlerClassName == null) {
- handlerClassName = ((String) AccessController.doPrivileged(
- new GetPropertyAction(handlerPropName)));
- if (handlerClassName == null) {
- handlerClassName = NO_HANDLER; /* Do not try this again */
- return false;
- }
- }
-
- /* Load the class, instantiate it, and find its handle method */
- Method m;
- Object h;
- try {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- Class c = Class.forName(handlerClassName, true, cl);
- m = c.getMethod("handle", new Class[] { Throwable.class });
- h = c.newInstance();
- } catch (Throwable x) {
- handlerClassName = NO_HANDLER; /* Do not try this again */
- return false;
- }
-
- /* Finally, invoke the handler */
- m.invoke(h, new Object[] { thrown });
-
- } catch (Throwable x) {
- return false;
- }
-
- return true;
+ getUncaughtExceptionHandler().uncaughtException(this, e);
+ // don't rethrow the exception to avoid EDT recreation
}
boolean isDispatching(EventQueue eq) {
--- a/jdk/src/share/classes/java/awt/List.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/List.java Thu Feb 26 14:25:55 2009 -0800
@@ -378,7 +378,7 @@
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
- peer.addItem(item, index);
+ peer.add(item, index);
}
}
@@ -413,7 +413,7 @@
public synchronized void clear() {
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
- peer.clear();
+ peer.removeAll();
}
items = new Vector();
selected = new int[0];
@@ -718,7 +718,7 @@
multipleMode = b;
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
- peer.setMultipleSelections(b);
+ peer.setMultipleMode(b);
}
}
}
@@ -768,7 +768,7 @@
synchronized (getTreeLock()) {
ListPeer peer = (ListPeer)this.peer;
return (peer != null) ?
- peer.preferredSize(rows) :
+ peer.getPreferredSize(rows) :
super.preferredSize();
}
}
@@ -818,7 +818,7 @@
synchronized (getTreeLock()) {
ListPeer peer = (ListPeer)this.peer;
return (peer != null) ?
- peer.minimumSize(rows) :
+ peer.getMinimumSize(rows) :
super.minimumSize();
}
}
--- a/jdk/src/share/classes/java/awt/MenuItem.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/MenuItem.java Thu Feb 26 14:25:55 2009 -0800
@@ -268,7 +268,7 @@
enabled = true;
MenuItemPeer peer = (MenuItemPeer)this.peer;
if (peer != null) {
- peer.enable();
+ peer.setEnabled(true);
}
}
@@ -294,7 +294,7 @@
enabled = false;
MenuItemPeer peer = (MenuItemPeer)this.peer;
if (peer != null) {
- peer.disable();
+ peer.setEnabled(false);
}
}
--- a/jdk/src/share/classes/java/awt/Robot.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Robot.java Thu Feb 26 14:25:55 2009 -0800
@@ -70,10 +70,7 @@
private RobotPeer peer;
private boolean isAutoWaitForIdle = false;
private int autoDelay = 0;
- private static final int LEGAL_BUTTON_MASK =
- InputEvent.BUTTON1_MASK|
- InputEvent.BUTTON2_MASK|
- InputEvent.BUTTON3_MASK;
+ private static int LEGAL_BUTTON_MASK;
// location of robot's GC, used in mouseMove(), getPixelColor() and captureScreenImage()
private Point gdLoc;
@@ -98,6 +95,19 @@
}
init(GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice());
+ int tmpMask = 0;
+ if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ for (int i = 0; i < peer.getNumberOfButtons(); i++){
+ tmpMask |= InputEvent.getMaskForButton(i+1);
+ }
+ }
+ tmpMask |= InputEvent.BUTTON1_MASK|
+ InputEvent.BUTTON2_MASK|
+ InputEvent.BUTTON3_MASK|
+ InputEvent.BUTTON1_DOWN_MASK|
+ InputEvent.BUTTON2_DOWN_MASK|
+ InputEvent.BUTTON3_DOWN_MASK;
+ LEGAL_BUTTON_MASK = tmpMask;
}
/**
@@ -187,18 +197,55 @@
/**
* Presses one or more mouse buttons. The mouse buttons should
- * be released using the <code>mouseRelease</code> method.
+ * be released using the {@link #mouseRelease(int)} method.
*
- * @param buttons the Button mask; a combination of one or more
- * of these flags:
+ * @param buttons the Button mask; a combination of one or more
+ * mouse button masks.
+ * <p>
+ * It is allowed to use only a combination of valid values as a {@code buttons} parameter.
+ * A valid combination consists of {@code InputEvent.BUTTON1_DOWN_MASK},
+ * {@code InputEvent.BUTTON2_DOWN_MASK}, {@code InputEvent.BUTTON3_DOWN_MASK}
+ * and values returned by the
+ * {@link InputEvent#getMaskForButton(int) InputEvent.getMaskForButton(button)} method.
+ *
+ * The valid combination also depends on a
+ * {@link Toolkit#areExtraMouseButtonsEnabled() Toolkit.areExtraMouseButtonsEnabled()} value as follows:
* <ul>
- * <li><code>InputEvent.BUTTON1_MASK</code>
- * <li><code>InputEvent.BUTTON2_MASK</code>
- * <li><code>InputEvent.BUTTON3_MASK</code>
+ * <li> If support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * then it is allowed to use only the following standard button masks:
+ * {@code InputEvent.BUTTON1_DOWN_MASK}, {@code InputEvent.BUTTON2_DOWN_MASK},
+ * {@code InputEvent.BUTTON3_DOWN_MASK}.
+ * <li> If support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java
+ * then it is allowed to use the standard button masks
+ * and masks for existing extended mouse buttons, if the mouse has more then three buttons.
+ * In that way, it is allowed to use the button masks corresponding to the buttons
+ * in the range from 1 to {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}.
+ * <br>
+ * It is recommended to use the {@link InputEvent#getMaskForButton(int) InputEvent.getMaskForButton(button)}
+ * method to obtain the mask for any mouse button by its number.
* </ul>
- * @throws IllegalArgumentException if the button mask is not a
- * valid combination
+ * <p>
+ * The following standard button masks are also accepted:
+ * <ul>
+ * <li>{@code InputEvent.BUTTON1_MASK}
+ * <li>{@code InputEvent.BUTTON2_MASK}
+ * <li>{@code InputEvent.BUTTON3_MASK}
+ * </ul>
+ * However, it is recommended to use {@code InputEvent.BUTTON1_DOWN_MASK},
+ * {@code InputEvent.BUTTON2_DOWN_MASK}, {@code InputEvent.BUTTON3_DOWN_MASK} instead.
+ * Either extended {@code _DOWN_MASK} or old {@code _MASK} values
+ * should be used, but both those models should not be mixed.
+ * @throws IllegalArgumentException if the {@code buttons} mask contains the mask for extra mouse button
+ * and support for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * @throws IllegalArgumentException if the {@code buttons} mask contains the mask for extra mouse button
+ * that does not exist on the mouse and support for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java
* @see #mouseRelease(int)
+ * @see InputEvent#getMaskForButton(int)
+ * @see Toolkit#areExtraMouseButtonsEnabled()
+ * @see java.awt.MouseInfo#getNumberOfButtons()
+ * @see java.awt.event.MouseEvent
*/
public synchronized void mousePress(int buttons) {
checkButtonsArgument(buttons);
@@ -209,16 +256,53 @@
/**
* Releases one or more mouse buttons.
*
- * @param buttons the Button mask; a combination of one or more
- * of these flags:
+ * @param buttons the Button mask; a combination of one or more
+ * mouse button masks.
+ * <p>
+ * It is allowed to use only a combination of valid values as a {@code buttons} parameter.
+ * A valid combination consists of {@code InputEvent.BUTTON1_DOWN_MASK},
+ * {@code InputEvent.BUTTON2_DOWN_MASK}, {@code InputEvent.BUTTON3_DOWN_MASK}
+ * and values returned by the
+ * {@link InputEvent#getMaskForButton(int) InputEvent.getMaskForButton(button)} method.
+ *
+ * The valid combination also depends on a
+ * {@link Toolkit#areExtraMouseButtonsEnabled() Toolkit.areExtraMouseButtonsEnabled()} value as follows:
* <ul>
- * <li><code>InputEvent.BUTTON1_MASK</code>
- * <li><code>InputEvent.BUTTON2_MASK</code>
- * <li><code>InputEvent.BUTTON3_MASK</code>
+ * <li> If the support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * then it is allowed to use only the following standard button masks:
+ * {@code InputEvent.BUTTON1_DOWN_MASK}, {@code InputEvent.BUTTON2_DOWN_MASK},
+ * {@code InputEvent.BUTTON3_DOWN_MASK}.
+ * <li> If the support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java
+ * then it is allowed to use the standard button masks
+ * and masks for existing extended mouse buttons, if the mouse has more then three buttons.
+ * In that way, it is allowed to use the button masks corresponding to the buttons
+ * in the range from 1 to {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}.
+ * <br>
+ * It is recommended to use the {@link InputEvent#getMaskForButton(int) InputEvent.getMaskForButton(button)}
+ * method to obtain the mask for any mouse button by its number.
* </ul>
+ * <p>
+ * The following standard button masks are also accepted:
+ * <ul>
+ * <li>{@code InputEvent.BUTTON1_MASK}
+ * <li>{@code InputEvent.BUTTON2_MASK}
+ * <li>{@code InputEvent.BUTTON3_MASK}
+ * </ul>
+ * However, it is recommended to use {@code InputEvent.BUTTON1_DOWN_MASK},
+ * {@code InputEvent.BUTTON2_DOWN_MASK}, {@code InputEvent.BUTTON3_DOWN_MASK} instead.
+ * Either extended {@code _DOWN_MASK} or old {@code _MASK} values
+ * should be used, but both those models should not be mixed.
+ * @throws IllegalArgumentException if the {@code buttons} mask contains the mask for extra mouse button
+ * and support for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * @throws IllegalArgumentException if the {@code buttons} mask contains the mask for extra mouse button
+ * that does not exist on the mouse and support for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java
* @see #mousePress(int)
- * @throws IllegalArgumentException if the button mask is not a valid
- * combination
+ * @see InputEvent#getMaskForButton(int)
+ * @see Toolkit#areExtraMouseButtonsEnabled()
+ * @see java.awt.MouseInfo#getNumberOfButtons()
+ * @see java.awt.event.MouseEvent
*/
public synchronized void mouseRelease(int buttons) {
checkButtonsArgument(buttons);
--- a/jdk/src/share/classes/java/awt/TextArea.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/TextArea.java Thu Feb 26 14:25:55 2009 -0800
@@ -321,7 +321,7 @@
public synchronized void insertText(String str, int pos) {
TextAreaPeer peer = (TextAreaPeer)this.peer;
if (peer != null) {
- peer.insertText(str, pos);
+ peer.insert(str, pos);
} else {
text = text.substring(0, pos) + str + text.substring(pos);
}
@@ -385,7 +385,7 @@
public synchronized void replaceText(String str, int start, int end) {
TextAreaPeer peer = (TextAreaPeer)this.peer;
if (peer != null) {
- peer.replaceText(str, start, end);
+ peer.replaceRange(str, start, end);
} else {
text = text.substring(0, start) + str + text.substring(end);
}
@@ -500,7 +500,7 @@
synchronized (getTreeLock()) {
TextAreaPeer peer = (TextAreaPeer)this.peer;
return (peer != null) ?
- peer.preferredSize(rows, columns) :
+ peer.getPreferredSize(rows, columns) :
super.preferredSize();
}
}
@@ -552,7 +552,7 @@
synchronized (getTreeLock()) {
TextAreaPeer peer = (TextAreaPeer)this.peer;
return (peer != null) ?
- peer.minimumSize(rows, columns) :
+ peer.getMinimumSize(rows, columns) :
super.minimumSize();
}
}
--- a/jdk/src/share/classes/java/awt/TextField.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/TextField.java Thu Feb 26 14:25:55 2009 -0800
@@ -281,7 +281,7 @@
echoChar = c;
TextFieldPeer peer = (TextFieldPeer)this.peer;
if (peer != null) {
- peer.setEchoCharacter(c);
+ peer.setEchoChar(c);
}
}
}
@@ -376,7 +376,7 @@
synchronized (getTreeLock()) {
TextFieldPeer peer = (TextFieldPeer)this.peer;
return (peer != null) ?
- peer.preferredSize(columns) :
+ peer.getPreferredSize(columns) :
super.preferredSize();
}
}
@@ -424,7 +424,7 @@
synchronized (getTreeLock()) {
TextFieldPeer peer = (TextFieldPeer)this.peer;
return (peer != null) ?
- peer.minimumSize(columns) :
+ peer.getMinimumSize(columns) :
super.minimumSize();
}
}
--- a/jdk/src/share/classes/java/awt/Toolkit.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Toolkit.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1995-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
@@ -2550,4 +2550,37 @@
}
}
}
+
+ /**
+ * Reports whether events from extra mouse buttons are allowed to be processed and posted into
+ * {@code EventQueue}.
+ * <br>
+ * To change the returned value it is necessary to set the {@code sun.awt.enableExtraMouseButtons}
+ * property before the {@code Toolkit} class initialization. This setting could be done on the application
+ * startup by the following command:
+ * <pre>
+ * java -Dsun.awt.enableExtraMouseButtons=false Application
+ * </pre>
+ * Alternatively, the property could be set in the application by using the following code:
+ * <pre>
+ * System.setProperty("sun.awt.enableExtraMouseButtons", "true");
+ * </pre>
+ * before the {@code Toolkit} class initialization.
+ * If not set by the time of the {@code Toolkit} class initialization, this property will be
+ * initialized with {@code true}.
+ * Changing this value after the {@code Toolkit} class initialization will have no effect.
+ * <p>
+ * The current value could be queried by using the
+ * {@code System.getProperty("sun.awt.enableExtraMouseButtons")} method.
+ * @exception HeadlessException if GraphicsEnvironment.isHeadless() returns true
+ * @return {@code true} if events from extra mouse buttons are allowed to be processed and posted;
+ * {@code false} otherwise
+ * @see System#getProperty(String propertyName)
+ * @see System#setProperty(String propertyName, String value)
+ * @see java.awt.EventQueue
+ * @since 1.7
+ */
+ public boolean areExtraMouseButtonsEnabled() throws HeadlessException {
+ return Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled();
+ }
}
--- a/jdk/src/share/classes/java/awt/Window.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/Window.java Thu Feb 26 14:25:55 2009 -0800
@@ -53,6 +53,7 @@
import sun.awt.CausedFocusEvent;
import sun.awt.SunToolkit;
import sun.awt.util.IdentityArrayList;
+import sun.java2d.Disposer;
import sun.java2d.pipe.Region;
import sun.security.action.GetPropertyAction;
import sun.security.util.SecurityConstants;
@@ -409,8 +410,6 @@
}
modalExclusionType = Dialog.ModalExclusionType.NO_EXCLUDE;
-
- sun.java2d.Disposer.addRecord(anchor, new WindowDisposerRecord(appContext, this));
}
/**
@@ -540,6 +539,10 @@
if (owner != null) {
owner.addOwnedWindow(weakThis);
}
+
+ // Fix for 6758673: this call is moved here from init(gc), because
+ // WindowDisposerRecord requires a proper value of parent field.
+ Disposer.addRecord(anchor, new WindowDisposerRecord(appContext, this));
}
/**
--- a/jdk/src/share/classes/java/awt/doc-files/DesktopProperties.html Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/doc-files/DesktopProperties.html Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
<!--
- Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ Copyright 2005-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
@@ -64,6 +64,11 @@
<td valign="TOP"><a href="../../util/Map.html">java.util.Map<a/></td>
<td valign="TOP">Font smoothing (text antialiasing) settings.<a/></td>
</tr>
+<tr>
+<td valign="TOP"><A href=#"sun.awt.enableExtraMouseButtons">sun.awt.enableExtraMouseButtons</A</td>
+<td valign="TOP"><a href="../../lang/Boolean.html">java.lang.Boolean<a/></td>
+<td valign="TOP">Controls if mouse events from extra buttons are to be generated or not<a/></td>
+</tr>
</table>
<p>
<h2>Desktop Font Rendering Hints</h2>
@@ -219,5 +224,50 @@
determine that there is a non-null return for any screen device using
the per-device property name.
</ul>
+<h2>Mouse Functionality</h2>
+<b>Desktop Property: <A name="sun.awt.enableExtraMouseButtons">"sun.awt.enableExtraMouseButtons"</A></b>
+<p>
+This property determines if events from extra mouse buttons (if they are exist and are
+enabled by the underlying operating system) are allowed to be processed and posted into
+{@code EventQueue}.
+<br>
+The value could be changed by passing "sun.awt.enableExtraMouseButtons"
+property value into java before application starts. This could be done with the following command:
+<pre>
+java -Dsun.awt.enableExtraMouseButtons=false Application
+</pre>
+Once set on application startup, it is impossible to change this value after.
+<br>
+Current value could also be queried using getDesktopProperty("sun.awt.enableExtraMouseButtons")
+method.
+<br>
+If the property is set to {@code true} then
+<ul>
+<li> it is still legal to create {@code MouseEvent} objects with
+standard buttons and, if the mouse has more
+then three buttons, it is also legal to use buttons from the range started
+from 0 up to {@link java.awt.MouseInfo#getNumberOfButtons() getNumberOfButtons()}.
+
+<li> it is legal to use standard button masks when using {@code Robot.mousePress()}
+and {@code Robot.mouseRelease()} methods and, if the mouse has more then three buttons,
+it is also legal to use masks for existing extended mouse buttons.
+That way, if there are more then three buttons on the mouse then it is allowed to
+use button masks corresponding to the buttons
+in the range from 1 up to {@link java.awt.MouseInfo#getNumberOfButtons() getNumberOfButtons()}
+</ul>
+<br>
+If the property is set to {@code false} then
+<ul>
+<li> it is legal to create {@code MouseEvent} objects with standard buttons
+only: {@code NOBUTTON}, {@code BUTTON1}, {@code BUTTON2} and
+{@code BUTTON3}
+<li> it is legal to use standard button masks only:
+{@code InputEvent.BUTTON1_DOWN_MASK}, {@code InputEvent.BUTTON2_DOWN_MASK},
+{@code InputEvent.BUTTON3_DOWN_MASK}
+</ul>
+
+This property should be used when there is no need in listening mouse events fired as a result of
+activity with extra mouse button.
+By default this property is set to {@code true}.
</body>
</html>
--- a/jdk/src/share/classes/java/awt/event/InputEvent.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputEvent.java Thu Feb 26 14:25:55 2009 -0800
@@ -31,6 +31,7 @@
import java.awt.Toolkit;
import java.util.logging.Logger;
import java.util.logging.Level;
+import java.util.Arrays;
/**
* The root event class for all component-level input events.
@@ -153,13 +154,93 @@
*/
public static final int ALT_GRAPH_DOWN_MASK = 1 << 13;
+ /**
+ * An array of extended modifiers for additional buttons.
+ * @see getButtonDownMasks
+ * @since 7.0
+ */
+ private static final int [] BUTTON_DOWN_MASK = new int [] { BUTTON1_DOWN_MASK,
+ BUTTON2_DOWN_MASK,
+ BUTTON3_DOWN_MASK,
+ 1<<14, //4th phisical button (this is not a wheel!)
+ 1<<15, //(this is not a wheel!)
+ 1<<16,
+ 1<<17,
+ 1<<18,
+ 1<<19,
+ 1<<20,
+ 1<<21 };
+
+ /**
+ * A method to access an array of extended modifiers for additional buttons.
+ * @since 7.0
+ */
+ private static int [] getButtonDownMasks(){
+ return Arrays.copyOf(BUTTON_DOWN_MASK, BUTTON_DOWN_MASK.length);
+ }
+
+
+ /**
+ * A method to obtain a mask for any existing mouse button.
+ * The returned mask may be used for different purposes. Following are some of them:
+ * <ul>
+ * <li> {@link java.awt.Robot#mousePress(int) mousePress(buttons)} and
+ * {@link java.awt.Robot#mouseRelease(int) mouseRelease(buttons)}
+ * <li> as a {@code modifiers} parameter when creating a new {@link MouseEvent} instance
+ * <li> to check {@link MouseEvent#getModifiersEx() modifiersEx} of existing {@code MouseEvent}
+ * </ul>
+ * @param button is a number to represent a button starting from 1.
+ * For example,
+ * <pre>
+ * int button = InputEvent.getMaskForButton(1);
+ * </pre>
+ * will have the same meaning as
+ * <pre>
+ * int button = InputEvent.getMaskForButton(MouseEvent.BUTTON1);
+ * </pre>
+ * because {@link MouseEvent#BUTTON1 MouseEvent.BUTTON1} equals to 1.
+ * If a mouse has three enabled buttons(see {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()})
+ * then the values from the left column passed into the method will return
+ * corresponding values from the right column:
+ * <PRE>
+ * <b>button </b> <b>returned mask</b>
+ * {@link MouseEvent#BUTTON1 BUTTON1} {@link MouseEvent#BUTTON1_DOWN_MASK BUTTON1_DOWN_MASK}
+ * {@link MouseEvent#BUTTON2 BUTTON2} {@link MouseEvent#BUTTON2_DOWN_MASK BUTTON2_DOWN_MASK}
+ * {@link MouseEvent#BUTTON3 BUTTON3} {@link MouseEvent#BUTTON3_DOWN_MASK BUTTON3_DOWN_MASK}
+ * </PRE>
+ * If a mouse has more than three enabled buttons then more values
+ * are admissible (4, 5, etc.). There is no assigned constants for these extended buttons.
+ * The button masks for the extra buttons returned by this method have no assigned names like the
+ * first three button masks.
+ * <p>
+ * This method has the following implementation restriction.
+ * It returns masks for a limited number of buttons only. The maximum number is
+ * implementation dependent and may vary.
+ * This limit is defined by the relevant number
+ * of buttons that may hypothetically exist on the mouse but it is greater than the
+ * {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}.
+ * <p>
+ * @throws IllegalArgumentException if {@code button} is less than zero or greater than the number
+ * of button masks reserved for buttons
+ * @since 7.0
+ * @see java.awt.MouseInfo#getNumberOfButtons()
+ * @see Toolkit#areExtraMouseButtonsEnabled()
+ * @see MouseEvent#getModifiers()
+ * @see MouseEvent#getModifiersEx()
+ */
+ public static int getMaskForButton(int button) {
+ if (button <= 0 || button > BUTTON_DOWN_MASK.length) {
+ throw new IllegalArgumentException("button doesn\'t exist " + button);
+ }
+ return BUTTON_DOWN_MASK[button - 1];
+ }
+
// the constant below MUST be updated if any extra modifier
// bits are to be added!
// in fact, it is undesirable to add modifier bits
// to the same field as this may break applications
// see bug# 5066958
-
- static final int FIRST_HIGH_BIT = 1 << 14;
+ static final int FIRST_HIGH_BIT = 1 << 22;
static final int JDK_1_3_MODIFIERS = SHIFT_DOWN_MASK - 1;
static final int HIGH_MODIFIERS = ~( FIRST_HIGH_BIT - 1 );
@@ -382,7 +463,7 @@
* cause the returning an empty string.
*
* @param modifiers a modifier mask describing the extended
- * modifier keys and mouse buttons for the event
+ * modifier keys and mouse buttons for the event
* @return a text description of the combination of extended
* modifier keys and mouse buttons that were held down
* during the event.
@@ -410,17 +491,14 @@
buf.append(Toolkit.getProperty("AWT.altGraph", "Alt Graph"));
buf.append("+");
}
- if ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0) {
- buf.append(Toolkit.getProperty("AWT.button1", "Button1"));
- buf.append("+");
- }
- if ((modifiers & InputEvent.BUTTON2_DOWN_MASK) != 0) {
- buf.append(Toolkit.getProperty("AWT.button2", "Button2"));
- buf.append("+");
- }
- if ((modifiers & InputEvent.BUTTON3_DOWN_MASK) != 0) {
- buf.append(Toolkit.getProperty("AWT.button3", "Button3"));
- buf.append("+");
+
+ int buttonNumber = 1;
+ for (int mask : InputEvent.BUTTON_DOWN_MASK){
+ if ((modifiers & mask) != 0) {
+ buf.append(Toolkit.getProperty("AWT.button"+buttonNumber, "Button"+buttonNumber));
+ buf.append("+");
+ }
+ buttonNumber++;
}
if (buf.length() > 0) {
buf.setLength(buf.length()-1); // remove trailing '+'
--- a/jdk/src/share/classes/java/awt/event/MouseEvent.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseEvent.java Thu Feb 26 14:25:55 2009 -0800
@@ -32,6 +32,7 @@
import java.io.IOException;
import java.io.ObjectInputStream;
import java.awt.IllegalComponentStateException;
+import java.awt.MouseInfo;
/**
* An event which indicates that a mouse action occurred in a component.
@@ -135,7 +136,15 @@
* for <code>BUTTON2_MASK</code> arrives first,
* followed by the pair for <code>BUTTON1_MASK</code>.
* <p>
- *
+ * Some extra mouse buttons are added to extend the standard set of buttons
+ * represented by the following constants:{@code BUTTON1}, {@code BUTTON2}, and {@code BUTTON3}.
+ * Extra buttons have no assigned {@code BUTTONx}
+ * constants as well as their button masks have no assigned {@code BUTTONx_DOWN_MASK}
+ * constants. Nevertheless, ordinal numbers starting from 4 may be
+ * used as button numbers (button ids). Values obtained by the
+ * {@link InputEvent#getMaskForButton(int) getMaskForButton(button)} method may be used
+ * as button masks.
+ * <p>
* <code>MOUSE_DRAGGED</code> events are delivered to the <code>Component</code>
* in which the mouse button was pressed until the mouse button is released
* (regardless of whether the mouse position is within the bounds of the
@@ -324,13 +333,31 @@
/**
* Indicates which, if any, of the mouse buttons has changed state.
*
- * The only legal values are the following constants:
- * <code>NOBUTTON</code>,
- * <code>BUTTON1</code>,
- * <code>BUTTON2</code> or
- * <code>BUTTON3</code>.
+ * The valid values are ranged from 0 to the value returned by the
+ * {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()} method.
+ * This range already includes constants {@code NOBUTTON}, {@code BUTTON1},
+ * {@code BUTTON2}, and {@code BUTTON3}
+ * if these buttons are present. So it is allowed to use these constants too.
+ * For example, for a mouse with two buttons this field may contain the following values:
+ * <ul>
+ * <li> 0 ({@code NOBUTTON})
+ * <li> 1 ({@code BUTTON1})
+ * <li> 2 ({@code BUTTON2})
+ * </ul>
+ * If a mouse has 5 buttons, this field may contain the following values:
+ * <ul>
+ * <li> 0 ({@code NOBUTTON})
+ * <li> 1 ({@code BUTTON1})
+ * <li> 2 ({@code BUTTON2})
+ * <li> 3 ({@code BUTTON3})
+ * <li> 4
+ * <li> 5
+ * </ul>
+ * If support for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled()} disabled by Java
+ * then the field may not contain the value larger than {@code BUTTON3}.
* @serial
- * @see #getButton().
+ * @see #getButton()
+ * @see java.awt.Toolkit#areExtraMouseButtonsEnabled()
*/
int button;
@@ -385,6 +412,15 @@
}
/**
+ * A number of buttons available on the mouse at the {@code Toolkit} machinery startup.
+ */
+ private static int cachedNumberOfButtons;
+
+ static {
+ cachedNumberOfButtons = MouseInfo.getNumberOfButtons();
+ }
+
+ /**
* Returns the absolute horizontal x position of the event.
* In a virtual device multi-screen environment in which the
* desktop area could span multiple physical screen devices,
@@ -421,7 +457,8 @@
/**
* Constructs a <code>MouseEvent</code> object with the
* specified source component,
- * type, modifiers, coordinates, and click count.
+ * type, time, modifiers, coordinates, click count, popupTrigger flag,
+ * and button number.
* <p>
* Creating an invalid event (such
* as by using more than one of the old _MASKs, or modifier/button
@@ -464,7 +501,33 @@
* @param popupTrigger A boolean that equals {@code true} if this event
* is a trigger for a popup menu
* @param button An integer that indicates, which of the mouse buttons has
- * changed its state
+ * changed its state.
+ * The following rules are applied to this parameter:
+ * <ul>
+ * <li>If support for the extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * then it is allowed to create {@code MouseEvent} objects only with the standard buttons:
+ * {@code NOBUTTON}, {@code BUTTON1}, {@code BUTTON2}, and
+ * {@code BUTTON3}.
+ * <li> If support for the extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java
+ * then it is allowed to create {@code MouseEvent} objects with
+ * the standard buttons.
+ * In case the support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java, then
+ * in addition to the standard buttons, {@code MouseEvent} objects can be created
+ * using buttons from the range starting from 4 to
+ * {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}
+ * if the mouse has more than three buttons.
+ * </ul>
+ * @throws IllegalArgumentException if {@code button} is less then zero
+ * @throws IllegalArgumentException if <code>source</code> is null
+ * @throws IllegalArgumentException if {@code button} is greater then BUTTON3 and the support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * @throws IllegalArgumentException if {@code button} is greater then the
+ * {@link java.awt.MouseInfo#getNumberOfButtons() current number of buttons} and the support
+ * for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled}
+ * by Java
* @throws IllegalArgumentException if an invalid <code>button</code>
* value is passed in
* @throws IllegalArgumentException if <code>source</code> is null
@@ -498,7 +561,7 @@
/**
* Constructs a <code>MouseEvent</code> object with the
* specified source component,
- * type, modifiers, coordinates, and click count.
+ * type, modifiers, coordinates, click count, and popupTrigger flag.
* An invocation of the form
* <tt>MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger)</tt>
* behaves in exactly the same way as the invocation
@@ -551,10 +614,26 @@
}
+ /* if the button is an extra button and it is released or clicked then in Xsystem its state
+ is not modified. Exclude this button number from ExtModifiers mask.*/
+ transient private boolean shouldExcludeButtonFromExtModifiers = false;
+
+ /**
+ * {@inheritDoc}
+ */
+ public int getModifiersEx() {
+ int tmpModifiers = modifiers;
+ if (shouldExcludeButtonFromExtModifiers) {
+ tmpModifiers &= ~(InputEvent.getMaskForButton(getButton()));
+ }
+ return tmpModifiers & ~JDK_1_3_MODIFIERS;
+ }
+
/**
* Constructs a <code>MouseEvent</code> object with the
* specified source component,
- * type, modifiers, coordinates, absolute coordinates, and click count.
+ * type, time, modifiers, coordinates, absolute coordinates, click count, popupTrigger flag,
+ * and button number.
* <p>
* Creating an invalid event (such
* as by using more than one of the old _MASKs, or modifier/button
@@ -595,7 +674,33 @@
* @param popupTrigger A boolean that equals {@code true} if this event
* is a trigger for a popup menu
* @param button An integer that indicates, which of the mouse buttons has
- * changed its state
+ * changed its state.
+ * The following rules are applied to this parameter:
+ * <ul>
+ * <li>If support for the extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * then it is allowed to create {@code MouseEvent} objects only with the standard buttons:
+ * {@code NOBUTTON}, {@code BUTTON1}, {@code BUTTON2}, and
+ * {@code BUTTON3}.
+ * <li> If support for the extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java
+ * then it is allowed to create {@code MouseEvent} objects with
+ * the standard buttons.
+ * In case the support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java, then
+ * in addition to the standard buttons, {@code MouseEvent} objects can be created
+ * using buttons from the range starting from 4 to
+ * {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}
+ * if the mouse has more than three buttons.
+ * </ul>
+ * @throws IllegalArgumentException if {@code button} is less then zero
+ * @throws IllegalArgumentException if <code>source</code> is null
+ * @throws IllegalArgumentException if {@code button} is greater then BUTTON3 and the support for extended mouse buttons is
+ * {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * @throws IllegalArgumentException if {@code button} is greater then the
+ * {@link java.awt.MouseInfo#getNumberOfButtons() current number of buttons} and the support
+ * for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled}
+ * by Java
* @throws IllegalArgumentException if an invalid <code>button</code>
* value is passed in
* @throws IllegalArgumentException if <code>source</code> is null
@@ -610,6 +715,10 @@
* @see #getClickCount()
* @see #isPopupTrigger()
* @see #getButton()
+ * @see #button
+ * @see Toolkit#areExtraMouseButtonsEnabled()
+ * @see java.awt.MouseInfo#getNumberOfButtons()
+ * @see InputEvent#getMaskForButton(int)
* @since 1.6
*/
public MouseEvent(Component source, int id, long when, int modifiers,
@@ -623,14 +732,41 @@
this.yAbs = yAbs;
this.clickCount = clickCount;
this.popupTrigger = popupTrigger;
- if (button < NOBUTTON || button >BUTTON3) {
- throw new IllegalArgumentException("Invalid button value");
+ if (button < NOBUTTON){
+ throw new IllegalArgumentException("Invalid button value :" + button);
}
+ //TODO: initialize MouseInfo.cachedNumber on toolkit creation.
+ if (button > BUTTON3) {
+ if (!Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new IllegalArgumentException("Extra mouse events are disabled " + button);
+ } else {
+ if (button > cachedNumberOfButtons) {
+ throw new IllegalArgumentException("Nonexistent button " + button);
+ }
+ }
+ // XToolkit: extra buttons are not reporting about their state correctly.
+ // Being pressed they report the state=0 both on the press and on the release.
+ // For 1-3 buttons the state value equals zero on press and non-zero on release.
+ // Other modifiers like Shift, ALT etc seem report well with extra buttons.
+ // The problem reveals as follows: one button is pressed and then another button is pressed and released.
+ // So, the getModifiersEx() would not be zero due to a first button and we will skip this modifier.
+ // This may have to be moved into the peer code instead if possible.
+
+ if (getModifiersEx() != 0) { //There is at least one more button in a pressed state.
+ if (id == MouseEvent.MOUSE_RELEASED || id == MouseEvent.MOUSE_CLICKED){
+ System.out.println("MEvent. CASE!");
+ shouldExcludeButtonFromExtModifiers = true;
+ }
+ }
+ }
+
this.button = button;
+
if ((getModifiers() != 0) && (getModifiersEx() == 0)) {
setNewModifiers();
} else if ((getModifiers() == 0) &&
- (getModifiersEx() != 0 || button != NOBUTTON))
+ (getModifiersEx() != 0 || button != NOBUTTON) &&
+ (button <= BUTTON3))
{
setOldModifiers();
}
@@ -701,13 +837,55 @@
/**
* Returns which, if any, of the mouse buttons has changed state.
+ * The returned value is ranged
+ * from 0 to the {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}
+ * value.
+ * The returned value includes at least the following constants:
+ * <ul>
+ * <li> {@code NOBUTTON}
+ * <li> {@code BUTTON1}
+ * <li> {@code BUTTON2}
+ * <li> {@code BUTTON3}
+ * </ul>
+ * It is allowed to use those constants to compare with the returned button number in the application.
+ * For example,
+ * <pre>
+ * if (anEvent.getButton() == MouseEvent.BUTTON1) {
+ * </pre>
+ * In particular, for a mouse with one, two, or three buttons this method may return the following values:
+ * <ul>
+ * <li> 0 ({@code NOBUTTON})
+ * <li> 1 ({@code BUTTON1})
+ * <li> 2 ({@code BUTTON2})
+ * <li> 3 ({@code BUTTON3})
+ * </ul>
+ * Button numbers greater then {@code BUTTON3} have no constant identifier. So if a mouse with five buttons is
+ * installed, this method may return the following values:
+ * <ul>
+ * <li> 0 ({@code NOBUTTON})
+ * <li> 1 ({@code BUTTON1})
+ * <li> 2 ({@code BUTTON2})
+ * <li> 3 ({@code BUTTON3})
+ * <li> 4
+ * <li> 5
+ * </ul>
+ * <p>
+ * Note: If support for extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
+ * then the AWT event subsystem does not produce mouse events for the extended mouse
+ * buttons. So it is not expected that this method returns anything except {@code NOBUTTON}, {@code BUTTON1},
+ * {@code BUTTON2}, {@code BUTTON3}.
*
- * @return one of the following constants:
- * <code>NOBUTTON</code>,
- * <code>BUTTON1</code>,
- * <code>BUTTON2</code> or
- * <code>BUTTON3</code>.
+ * @return one of the values from 0 to {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}
+ * if support for the extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() enabled} by Java.
+ * That range includes {@code NOBUTTON}, {@code BUTTON1}, {@code BUTTON2}, {@code BUTTON3};
+ * <br>
+ * {@code NOBUTTON}, {@code BUTTON1}, {@code BUTTON2} or {@code BUTTON3}
+ * if support for the extended mouse buttons is {@link Toolkit#areExtraMouseButtonsEnabled() disabled} by Java
* @since 1.4
+ * @see Toolkit#areExtraMouseButtonsEnabled()
+ * @see java.awt.MouseInfo#getNumberOfButtons()
+ * @see #MouseEvent(Component, int, long, int, int, int, int, int, int, boolean, int)
+ * @see InputEvent#getMaskForButton(int)
*/
public int getButton() {
return button;
@@ -746,7 +924,7 @@
* and will cause the returning an unspecified string.
* Zero parameter means that no modifiers were passed and will
* cause the returning an empty string.
- *
+ * <p>
* @param modifiers A modifier mask describing the modifier keys and
* mouse buttons that were down during the event
* @return string string text description of the combination of modifier
@@ -788,6 +966,24 @@
buf.append(Toolkit.getProperty("AWT.button3", "Button3"));
buf.append("+");
}
+
+ int mask;
+
+ // TODO: add a toolkit field that holds a number of button on the mouse.
+ // As the method getMouseModifiersText() is static and obtain
+ // an integer as a parameter then we may not restrict this with the number
+ // of buttons installed on the mouse.
+ // It's a temporary solution. We need to somehow hold the number of buttons somewhere else.
+ for (int i = 1; i <= cachedNumberOfButtons; i++){
+ mask = InputEvent.getMaskForButton(i);
+ if ((modifiers & mask) != 0 &&
+ buf.indexOf(Toolkit.getProperty("AWT.button"+i, "Button"+i)) == -1) //1,2,3 buttons may already be there; so don't duplicate it.
+ {
+ buf.append(Toolkit.getProperty("AWT.button"+i, "Button"+i));
+ buf.append("+");
+ }
+ }
+
if (buf.length() > 0) {
buf.setLength(buf.length()-1); // remove trailing '+'
}
@@ -836,14 +1032,18 @@
str.append(",(").append(x).append(",").append(y).append(")");
str.append(",absolute(").append(xAbs).append(",").append(yAbs).append(")");
- str.append(",button=").append(getButton());
+ if (id != MOUSE_DRAGGED && id != MOUSE_MOVED){
+ str.append(",button=").append(getButton());
+ }
if (getModifiers() != 0) {
str.append(",modifiers=").append(getMouseModifiersText(modifiers));
}
if (getModifiersEx() != 0) {
- str.append(",extModifiers=").append(getModifiersExText(modifiers));
+ //Using plain "modifiers" here does show an excluded extended buttons in the string event representation.
+ //getModifiersEx() solves the problem.
+ str.append(",extModifiers=").append(getModifiersExText(getModifiersEx()));
}
str.append(",clickCount=").append(clickCount);
--- a/jdk/src/share/classes/java/awt/peer/ButtonPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ButtonPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,7 +25,11 @@
package java.awt.peer;
+import java.awt.Button;
+
/**
+ * The peer interface for {@link Button}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -33,5 +37,14 @@
* instances.
*/
public interface ButtonPeer extends ComponentPeer {
+
+ /**
+ * Sets the label that is displayed on the button. Can be {@code null}
+ * when the button should not display a label.
+ *
+ * @param label the label string to set
+ *
+ * @see Button#setLabel
+ */
void setLabel(String label);
}
--- a/jdk/src/share/classes/java/awt/peer/CanvasPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/CanvasPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,11 @@
*/
package java.awt.peer;
+import java.awt.Canvas;
+
/**
+ * The peer interface for {@link Canvas}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
--- a/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,11 @@
*/
package java.awt.peer;
+import java.awt.CheckboxMenuItem;
+
/**
+ * The peer interface for {@link CheckboxMenuItem}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -32,5 +36,14 @@
* instances.
*/
public interface CheckboxMenuItemPeer extends MenuItemPeer {
+
+ /**
+ * Sets the state of the checkbox to be checked ({@code true}) or
+ * unchecked ({@code false}).
+ *
+ * @param t the state to set on the checkbox
+ *
+ * @see CheckboxMenuItemPeer#setState(boolean)
+ */
void setState(boolean t);
}
--- a/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -27,6 +27,8 @@
import java.awt.*;
/**
+ * The peer interface for {@link Checkbox}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,7 +36,36 @@
* instances.
*/
public interface CheckboxPeer extends ComponentPeer {
+
+ /**
+ * Sets the state of the checkbox to be checked ({@code true}) or
+ * unchecked ({@code false}).
+ *
+ * @param t the state to set on the checkbox
+ *
+ * @see Checkbox#setState(boolean)
+ */
void setState(boolean state);
+
+ /**
+ * Sets the checkbox group for this checkbox. Checkboxes in one checkbox
+ * group can only be selected exclusively (like radio buttons). A value
+ * of {@code null} removes this checkbox from any checkbox group.
+ *
+ * @param g the checkbox group to set, or {@code null} when this
+ * checkbox should not be placed in any group
+ *
+ * @see Checkbox#setCheckboxGroup(CheckboxGroup)
+ */
void setCheckboxGroup(CheckboxGroup g);
+
+ /**
+ * Sets the label that should be displayed on the ckeckbox. A value of
+ * {@code null} means that no label should be displayed.
+ *
+ * @param label the label to be displayed on the checkbox, or
+ * {@code null} when no label should be displayed.
+ */
void setLabel(String label);
+
}
--- a/jdk/src/share/classes/java/awt/peer/ChoicePeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ChoicePeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,11 @@
*/
package java.awt.peer;
+import java.awt.Choice;
+
/**
+ * The peer interface for {@link Choice}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -32,13 +36,41 @@
* instances.
*/
public interface ChoicePeer extends ComponentPeer {
+
+ /**
+ * Adds an item with the string {@code item} to the combo box list
+ * at index {@code index}.
+ *
+ * @param item the label to be added to the list
+ * @param index the index where to add the item
+ *
+ * @see Choice#add(String)
+ */
void add(String item, int index);
+
+ /**
+ * Removes the item at index {@code index} from the combo box list.
+ *
+ * @param index the index where to remove the item
+ *
+ * @see Choice#remove(int)
+ */
void remove(int index);
+
+ /**
+ * Removes all items from the combo box list.
+ *
+ * @see Choice#removeAll()
+ */
void removeAll();
+
+ /**
+ * Selects the item at index {@code index}.
+ *
+ * @param index the index which should be selected
+ *
+ * @see Choice#select(int)
+ */
void select(int index);
- /*
- * DEPRECATED: Replaced by add(String, int).
- */
- void addItem(String item, int index);
}
--- a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -37,6 +37,12 @@
/**
+ * The peer interface for {@link Component}. This is the top level peer
+ * interface for widgets and defines the bulk of methods for AWT component
+ * peers. Most component peers have to implement this interface (via one
+ * of the subinterfaces), except menu components, which implement
+ * {@link MenuComponentPeer}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -44,63 +50,474 @@
* instances.
*/
public interface ComponentPeer {
- public static final int SET_LOCATION = 1,
- SET_SIZE = 2,
- SET_BOUNDS = 3,
- SET_CLIENT_SIZE = 4,
- RESET_OPERATION = 5,
- NO_EMBEDDED_CHECK = (1 << 14),
- DEFAULT_OPERATION = SET_BOUNDS;
+
+ /**
+ * Operation for {@link #setBounds(int, int, int, int, int)}, indicating
+ * a change in the component location only.
+ *
+ * @see #setBounds(int, int, int, int, int)
+ */
+ public static final int SET_LOCATION = 1;
+
+ /**
+ * Operation for {@link #setBounds(int, int, int, int, int)}, indicating
+ * a change in the component size only.
+ *
+ * @see #setBounds(int, int, int, int, int)
+ */
+ public static final int SET_SIZE = 2;
+
+ /**
+ * Operation for {@link #setBounds(int, int, int, int, int)}, indicating
+ * a change in the component size and location.
+ *
+ * @see #setBounds(int, int, int, int, int)
+ */
+ public static final int SET_BOUNDS = 3;
+
+ /**
+ * Operation for {@link #setBounds(int, int, int, int, int)}, indicating
+ * a change in the component client size. This is used for setting
+ * the 'inside' size of windows, without the border insets.
+ *
+ * @see #setBounds(int, int, int, int, int)
+ */
+ public static final int SET_CLIENT_SIZE = 4;
+
+ /**
+ * Resets the setBounds() operation to DEFAULT_OPERATION. This is not
+ * passed into {@link #setBounds(int, int, int, int, int)}.
+ *
+ * TODO: This is only used internally and should probably be moved outside
+ * the peer interface.
+ *
+ * @see Component#setBoundsOp
+ */
+ public static final int RESET_OPERATION = 5;
+
+ /**
+ * A flag that is used to suppress checks for embedded frames.
+ *
+ * TODO: This is only used internally and should probably be moved outside
+ * the peer interface.
+ */
+ public static final int NO_EMBEDDED_CHECK = (1 << 14);
+
+ /**
+ * The default operation, which is to set size and location.
+ *
+ * TODO: This is only used internally and should probably be moved outside
+ * the peer interface.
+ *
+ * @see Component#setBoundsOp
+ */
+ public static final int DEFAULT_OPERATION = SET_BOUNDS;
+
+ /**
+ * Determines if a component has been obscured, i.e. by an overlapping
+ * window or similar. This is used by JViewport for optimizing performance.
+ * This doesn't have to be implemented, when
+ * {@link #canDetermineObscurity()} returns {@code false}.
+ *
+ * @return {@code true} when the component has been obscured,
+ * {@code false} otherwise
+ *
+ * @see #canDetermineObscurity()
+ * @see javax.swing.JViewport#needsRepaintAfterBlit
+ */
boolean isObscured();
+
+ /**
+ * Returns {@code true} when the peer can determine if a component
+ * has been obscured, {@code false} false otherwise.
+ *
+ * @return {@code true} when the peer can determine if a component
+ * has been obscured, {@code false} false otherwise
+ *
+ * @see #isObscured()
+ * @see javax.swing.JViewport#needsRepaintAfterBlit
+ */
boolean canDetermineObscurity();
- void setVisible(boolean b);
- void setEnabled(boolean b);
- void paint(Graphics g);
- void repaint(long tm, int x, int y, int width, int height);
- void print(Graphics g);
- void setBounds(int x, int y, int width, int height, int op);
- void handleEvent(AWTEvent e);
- void coalescePaintEvent(PaintEvent e);
- Point getLocationOnScreen();
- Dimension getPreferredSize();
- Dimension getMinimumSize();
- ColorModel getColorModel();
- Toolkit getToolkit();
- Graphics getGraphics();
- FontMetrics getFontMetrics(Font font);
- void dispose();
- void setForeground(Color c);
- void setBackground(Color c);
- void setFont(Font f);
- void updateCursorImmediately();
- boolean requestFocus(Component lightweightChild,
- boolean temporary,
- boolean focusedWindowChangeAllowed,
- long time, CausedFocusEvent.Cause cause);
- boolean isFocusable();
+
+ /**
+ * Makes a component visible or invisible.
+ *
+ * @param v {@code true} to make a component visible,
+ * {@code false} to make it invisible
+ *
+ * @see Component#setVisible(boolean)
+ */
+ void setVisible(boolean v);
+
+ /**
+ * Enables or disables a component. Disabled components are usually grayed
+ * out and cannot be activated.
+ *
+ * @param e {@code true} to enable the component, {@code false}
+ * to disable it
+ *
+ * @see Component#setEnabled(boolean)
+ */
+ void setEnabled(boolean e);
+
+ /**
+ * Paints the component to the specified graphics context. This is called
+ * by {@link Component#paintAll(Graphics)} to paint the component.
+ *
+ * @param g the graphics context to paint to
+ *
+ * @see Component#paintAll(Graphics)
+ */
+ void paint(Graphics g);
+
+ /**
+ * Prints the component to the specified graphics context. This is called
+ * by {@link Component#printAll(Graphics)} to print the component.
+ *
+ * @param g the graphics context to print to
+ *
+ * @see Component#printAll(Graphics)
+ */
+ void print(Graphics g);
+
+ /**
+ * Sets the location or size or both of the component. The location is
+ * specified relative to the component's parent. The {@code op}
+ * parameter specifies which properties change. If it is
+ * {@link #SET_LOCATION}, then only the location changes (and the size
+ * parameters can be ignored). If {@code op} is {@link #SET_SIZE},
+ * then only the size changes (and the location can be ignored). If
+ * {@code op} is {@link #SET_BOUNDS}, then both change. There is a
+ * special value {@link #SET_CLIENT_SIZE}, which is used only for
+ * window-like components to set the size of the client (i.e. the 'inner'
+ * size, without the insets of the window borders).
+ *
+ * @param x the X location of the component
+ * @param y the Y location of the component
+ * @param width the width of the component
+ * @param height the height of the component
+ * @param op the operation flag
+ *
+ * @see #SET_BOUNDS
+ * @see #SET_LOCATION
+ * @see #SET_SIZE
+ * @see #SET_CLIENT_SIZE
+ */
+ void setBounds(int x, int y, int width, int height, int op);
+
+ /**
+ * Called to let the component peer handle events.
+ *
+ * @param e the AWT event to handle
+ *
+ * @see Component#dispatchEvent(AWTEvent)
+ */
+ void handleEvent(AWTEvent e);
+
+ /**
+ * Called to coalesce paint events.
+ *
+ * @param e the paint event to consider to coalesce
+ *
+ * @see EventQueue#coalescePaintEvent
+ */
+ void coalescePaintEvent(PaintEvent e);
+
+ /**
+ * Determines the location of the component on the screen.
+ *
+ * @return the location of the component on the screen
+ *
+ * @see Component#getLocationOnScreen()
+ */
+ Point getLocationOnScreen();
+
+ /**
+ * Determines the preferred size of the component.
+ *
+ * @return the preferred size of the component
+ *
+ * @see Component#getPreferredSize()
+ */
+ Dimension getPreferredSize();
+
+ /**
+ * Determines the minimum size of the component.
+ *
+ * @return the minimum size of the component
+ *
+ * @see Component#getMinimumSize()
+ */
+ Dimension getMinimumSize();
+
+ /**
+ * Returns the color model used by the component.
+ *
+ * @return the color model used by the component
+ *
+ * @see Component#getColorModel()
+ */
+ ColorModel getColorModel();
+
+ /**
+ * Returns the toolkit that is responsible for the component.
+ *
+ * @return the toolkit that is responsible for the component
+ *
+ * @see Component#getToolkit()
+ */
+ Toolkit getToolkit();
+
+ /**
+ * Returns a graphics object to paint on the component.
+ *
+ * @return a graphics object to paint on the component
+ *
+ * @see Component#getGraphics()
+ */
+ // TODO: Maybe change this to force Graphics2D, since many things will
+ // break with plain Graphics nowadays.
+ Graphics getGraphics();
+
+ /**
+ * Returns a font metrics object to determine the metrics properties of
+ * the specified font.
+ *
+ * @param font the font to determine the metrics for
+ *
+ * @return a font metrics object to determine the metrics properties of
+ * the specified font
+ *
+ * @see Component#getFontMetrics(Font)
+ */
+ FontMetrics getFontMetrics(Font font);
+
+ /**
+ * Disposes all resources held by the component peer. This is called
+ * when the component has been disconnected from the component hierarchy
+ * and is about to be garbage collected.
+ *
+ * @see Component#removeNotify()
+ */
+ void dispose();
+
+ /**
+ * Sets the foreground color of this component.
+ *
+ * @param c the foreground color to set
+ *
+ * @see Component#setForeground(Color)
+ */
+ void setForeground(Color c);
+
+ /**
+ * Sets the background color of this component.
+ *
+ * @param c the background color to set
+ *
+ * @see Component#setBackground(Color)
+ */
+ void setBackground(Color c);
- Image createImage(ImageProducer producer);
- Image createImage(int width, int height);
- VolatileImage createVolatileImage(int width, int height);
- boolean prepareImage(Image img, int w, int h, ImageObserver o);
- int checkImage(Image img, int w, int h, ImageObserver o);
+ /**
+ * Sets the font of this component.
+ *
+ * @param f the font of this component
+ *
+ * @see Component#setFont(Font)
+ */
+ void setFont(Font f);
+
+ /**
+ * Updates the cursor of the component.
+ *
+ * @see Component#updateCursorImmediately
+ */
+ void updateCursorImmediately();
+
+ /**
+ * Requests focus on this component.
+ *
+ * @param lightweightChild the actual lightweight child that requests the
+ * focus
+ * @param temporary {@code true} if the focus change is temporary,
+ * {@code false} otherwise
+ * @param focusedWindowChangeAllowed {@code true} if changing the
+ * focus of the containing window is allowed or not
+ * @param time the time of the focus change request
+ * @param cause the cause of the focus change request
+ *
+ * @return {@code true} if the focus change is guaranteed to be
+ * granted, {@code false} otherwise
+ */
+ boolean requestFocus(Component lightweightChild, boolean temporary,
+ boolean focusedWindowChangeAllowed, long time,
+ CausedFocusEvent.Cause cause);
+
+ /**
+ * Returns {@code true} when the component takes part in the focus
+ * traversal, {@code false} otherwise.
+ *
+ * @return {@code true} when the component takes part in the focus
+ * traversal, {@code false} otherwise
+ */
+ boolean isFocusable();
+
+ /**
+ * Creates an image using the specified image producer.
+ *
+ * @param producer the image producer from which the image pixels will be
+ * produced
+ *
+ * @return the created image
+ *
+ * @see Component#createImage(ImageProducer)
+ */
+ Image createImage(ImageProducer producer);
+
+ /**
+ * Creates an empty image with the specified width and height. This is
+ * generally used as a non-accelerated backbuffer for drawing onto the
+ * component (e.g. by Swing).
+ *
+ * @param width the width of the image
+ * @param height the height of the image
+ *
+ * @return the created image
+ *
+ * @see Component#createImage(int, int)
+ */
+ // TODO: Maybe make that return a BufferedImage, because some stuff will
+ // break if a different kind of image is returned.
+ Image createImage(int width, int height);
+
+ /**
+ * Creates an empty volatile image with the specified width and height.
+ * This is generally used as an accelerated backbuffer for drawing onto
+ * the component (e.g. by Swing).
+ *
+ * @param width the width of the image
+ * @param height the height of the image
+ *
+ * @return the created volatile image
+ *
+ * @see Component#createVolatileImage(int, int)
+ */
+ // TODO: Include capabilities here and fix Component#createVolatileImage
+ VolatileImage createVolatileImage(int width, int height);
+
+ /**
+ * Prepare the specified image for rendering on this component. This should
+ * start loading the image (if not already loaded) and create an
+ * appropriate screen representation.
+ *
+ * @param img the image to prepare
+ * @param w the width of the screen representation
+ * @param h the height of the screen representation
+ * @param o an image observer to observe the progress
+ *
+ * @return {@code true} if the image is already fully prepared,
+ * {@code false} otherwise
+ *
+ * @see Component#prepareImage(Image, int, int, ImageObserver)
+ */
+ boolean prepareImage(Image img, int w, int h, ImageObserver o);
+
+ /**
+ * Determines the status of the construction of the screen representaion
+ * of the specified image.
+ *
+ * @param img the image to check
+ * @param w the target width
+ * @param h the target height
+ * @param o the image observer to notify
+ *
+ * @return the status as bitwise ORed ImageObserver flags
+ *
+ * @see Component#checkImage(Image, int, int, ImageObserver)
+ */
+ int checkImage(Image img, int w, int h, ImageObserver o);
+
+ /**
+ * Returns the graphics configuration that corresponds to this component.
+ *
+ * @return the graphics configuration that corresponds to this component
+ *
+ * @see Component#getGraphicsConfiguration()
+ */
GraphicsConfiguration getGraphicsConfiguration();
- boolean handlesWheelScrolling();
- void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException;
+
+ /**
+ * Determines if the component handles wheel scrolling itself. Otherwise
+ * it is delegated to the component's parent.
+ *
+ * @return {@code true} if the component handles wheel scrolling,
+ * {@code false} otherwise
+ *
+ * @see Component#dispatchEventImpl(AWTEvent)
+ */
+ boolean handlesWheelScrolling();
+
+ /**
+ * Create {@code numBuffers} flipping buffers with the specified
+ * buffer capabilities.
+ *
+ * @param numBuffers the number of buffers to create
+ * @param caps the buffer capabilities
+ *
+ * @throws AWTException if flip buffering is not supported
+ *
+ * @see Component.FlipBufferStrategy#createBuffers
+ */
+ void createBuffers(int numBuffers, BufferCapabilities caps)
+ throws AWTException;
+
+ /**
+ * Returns the back buffer as image.
+ *
+ * @return the back buffer as image
+ *
+ * @see Component.FlipBufferStrategy#getBackBuffer
+ */
Image getBackBuffer();
+
+ /**
+ * Move the back buffer to the front buffer.
+ *
+ * @param x1 the area to be flipped, upper left X coordinate
+ * @param y1 the area to be flipped, upper left Y coordinate
+ * @param x2 the area to be flipped, lower right X coordinate
+ * @param y2 the area to be flipped, lower right Y coordinate
+ * @param flipAction the flip action to perform
+ *
+ * @see Component.FlipBufferStrategy#flip
+ */
void flip(int x1, int y1, int x2, int y2, BufferCapabilities.FlipContents flipAction);
+
+ /**
+ * Destroys all created buffers.
+ *
+ * @see Component.FlipBufferStrategy#destroyBuffers
+ */
void destroyBuffers();
/**
- * Reparents this peer to the new parent referenced by <code>newContainer</code> peer
- * Implementation depends on toolkit and container.
+ * Reparents this peer to the new parent referenced by
+ * {@code newContainer} peer. Implementation depends on toolkit and
+ * container.
+ *
* @param newContainer peer of the new parent container
+ *
* @since 1.5
*/
void reparent(ContainerPeer newContainer);
+
/**
- * Returns whether this peer supports reparenting to another parent withour destroying the peer
+ * Returns whether this peer supports reparenting to another parent without
+ * destroying the peer.
+ *
* @return true if appropriate reparent is supported, false otherwise
+ *
* @since 1.5
*/
boolean isReparentSupported();
@@ -109,50 +526,17 @@
* Used by lightweight implementations to tell a ComponentPeer to layout
* its sub-elements. For instance, a lightweight Checkbox needs to layout
* the box, as well as the text label.
+ *
+ * @see Component#validate()
*/
- void layout();
-
-
- Rectangle getBounds();
+ void layout();
/**
* Applies the shape to the native component window.
* @since 1.7
+ *
+ * @see Component#applyCompoundShape
*/
void applyShape(Region shape);
- /**
- * DEPRECATED: Replaced by getPreferredSize().
- */
- Dimension preferredSize();
-
- /**
- * DEPRECATED: Replaced by getMinimumSize().
- */
- Dimension minimumSize();
-
- /**
- * DEPRECATED: Replaced by setVisible(boolean).
- */
- void show();
-
- /**
- * DEPRECATED: Replaced by setVisible(boolean).
- */
- void hide();
-
- /**
- * DEPRECATED: Replaced by setEnabled(boolean).
- */
- void enable();
-
- /**
- * DEPRECATED: Replaced by setEnabled(boolean).
- */
- void disable();
-
- /**
- * DEPRECATED: Replaced by setBounds(int, int, int, int).
- */
- void reshape(int x, int y, int width, int height);
}
--- a/jdk/src/share/classes/java/awt/peer/ContainerPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ContainerPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -27,6 +27,9 @@
import java.awt.*;
/**
+ * The peer interface for {@link Container}. This is the parent interface
+ * for all container like widgets.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,30 +37,60 @@
* instances.
*/
public interface ContainerPeer extends ComponentPeer {
+
+ /**
+ * Returns the insets of this container. Insets usually is the space that
+ * is occupied by things like borders.
+ *
+ * @return the insets of this container
+ */
Insets getInsets();
+
+ /**
+ * Notifies the peer that validation of the component tree is about to
+ * begin.
+ *
+ * @see Container#validate()
+ */
void beginValidate();
- void endValidate();
- void beginLayout();
- void endLayout();
- boolean isPaintPending();
/**
- * Restacks native windows - children of this native window - according to Java container order
+ * Notifies the peer that validation of the component tree is finished.
+ *
+ * @see Container#validate()
+ */
+ void endValidate();
+
+ /**
+ * Notifies the peer that layout is about to begin. This is called
+ * before the container itself and its children are laid out.
+ *
+ * @see Container#validateTree()
+ */
+ void beginLayout();
+
+ /**
+ * Notifies the peer that layout is finished. This is called after the
+ * container and its children have been laid out.
+ *
+ * @see Container#validateTree()
+ */
+ void endLayout();
+
+ /**
+ * Restacks native windows - children of this native window - according to
+ * Java container order.
+ *
* @since 1.5
*/
void restack();
/**
- * Indicates availabiltity of restacking operation in this container.
+ * Indicates availability of restacking operation in this container.
+ *
* @return Returns true if restack is supported, false otherwise
+ *
* @since 1.5
*/
boolean isRestackSupported();
- /**
-
-
-
- * DEPRECATED: Replaced by getInsets().
- */
- Insets insets();
}
--- a/jdk/src/share/classes/java/awt/peer/DesktopPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/DesktopPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -32,7 +32,7 @@
import java.awt.Desktop.Action;
/**
- * The <code>DesktopPeer</code> interface provides methods for the operation
+ * The {@code DesktopPeer} interface provides methods for the operation
* of open, edit, print, browse and mail with the given URL or file, by
* launching the associated application.
* <p>
@@ -40,14 +40,15 @@
*
*/
public interface DesktopPeer {
+
/**
* Returns whether the given action is supported on the current platform.
* @param action the action type to be tested if it's supported on the
* current platform.
- * @return <code>true</code> if the given action is supported on
- * the current platform; <code>false</code> otherwise.
+ * @return {@code true} if the given action is supported on
+ * the current platform; {@code false} otherwise.
*/
- public boolean isSupported(Action action);
+ boolean isSupported(Action action);
/**
* Launches the associated application to open the given file. The
@@ -58,7 +59,7 @@
* @throws IOException If the given file has no associated application,
* or the associated application fails to be launched.
*/
- public void open(File file) throws IOException;
+ void open(File file) throws IOException;
/**
* Launches the associated editor and opens the given file for editing. The
@@ -69,7 +70,7 @@
* @throws IOException If the given file has no associated editor, or
* the associated application fails to be launched.
*/
- public void edit(File file) throws IOException;
+ void edit(File file) throws IOException;
/**
* Prints the given file with the native desktop printing facility, using
@@ -79,7 +80,7 @@
* @throws IOException If the given file has no associated application
* that can be used to print it.
*/
- public void print(File file) throws IOException;
+ void print(File file) throws IOException;
/**
* Launches the mail composing window of the user default mail client,
@@ -93,7 +94,7 @@
* @throws IOException If the user default mail client is not found,
* or it fails to be launched.
*/
- public void mail(URI mailtoURL) throws IOException;
+ void mail(URI mailtoURL) throws IOException;
/**
* Launches the user default browser to display the given URI.
@@ -102,5 +103,5 @@
* @throws IOException If the user default browser is not found,
* or it fails to be launched.
*/
- public void browse(URI url) throws IOException;
+ void browse(URI url) throws IOException;
}
--- a/jdk/src/share/classes/java/awt/peer/DialogPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/DialogPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -28,6 +28,9 @@
import java.awt.*;
/**
+ * The peer interface for {@link Dialog}. This adds a couple of dialog specific
+ * features to the {@link WindowPeer} interface.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -35,7 +38,33 @@
* instances.
*/
public interface DialogPeer extends WindowPeer {
+
+ /**
+ * Sets the title on the dialog window.
+ *
+ * @param title the title to set
+ *
+ * @see Dialog#setTitle(String)
+ */
void setTitle(String title);
+
+ /**
+ * Sets if the dialog should be resizable or not.
+ *
+ * @param resizeable {@code true} when the dialog should be resizable,
+ * {@code false} if not
+ *
+ * @see Dialog#setResizable(boolean)
+ */
void setResizable(boolean resizeable);
+
+ /**
+ * Block the specified windows. This is used for modal dialogs.
+ *
+ * @param windows the windows to block
+ *
+ * @see Dialog#modalShow()
+ * @see Dialog#blockWindows()
+ */
void blockWindows(java.util.List<Window> windows);
}
--- a/jdk/src/share/classes/java/awt/peer/FileDialogPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/FileDialogPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,9 +25,12 @@
package java.awt.peer;
+import java.awt.FileDialog;
import java.io.FilenameFilter;
/**
+ * The peer interface for {@link FileDialog}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -35,7 +38,32 @@
* instances.
*/
public interface FileDialogPeer extends DialogPeer {
+
+ /**
+ * Sets the selected file for this file dialog.
+ *
+ * @param file the file to set as selected file, or {@code null} for
+ * no selected file
+ *
+ * @see FileDialog#setFile(String)
+ */
void setFile(String file);
+
+ /**
+ * Sets the current directory for this file dialog.
+ *
+ * @param dir the directory to set
+ *
+ * @see FileDialog#setDirectory(String)
+ */
void setDirectory(String dir);
+
+ /**
+ * Sets the filename filter for filtering the displayed files.
+ *
+ * @param filter the filter to set
+ *
+ * @see FileDialog#setFilenameFilter(FilenameFilter)
+ */
void setFilenameFilter(FilenameFilter filter);
}
--- a/jdk/src/share/classes/java/awt/peer/FontPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/FontPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -26,6 +26,9 @@
package java.awt.peer;
/**
+ * The peer interface for fonts. This is only a marker interface and not
+ * used by AWT itself.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
--- a/jdk/src/share/classes/java/awt/peer/FramePeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/FramePeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -27,7 +27,12 @@
import java.awt.*;
+import sun.awt.EmbeddedFrame;
+
/**
+ * The peer interface for {@link Frame}. This adds a couple of frame specific
+ * methods to the {@link WindowPeer} interface.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -35,12 +40,89 @@
* instances.
*/
public interface FramePeer extends WindowPeer {
+
+ /**
+ * Sets the title on the frame.
+ *
+ * @param title the title to set
+ *
+ * @see Frame#setTitle(String)
+ */
void setTitle(String title);
+
+ /**
+ * Sets the menu bar for the frame.
+ *
+ * @param mb the menu bar to set
+ *
+ * @see Frame#setMenuBar(MenuBar)
+ */
void setMenuBar(MenuBar mb);
+
+ /**
+ * Sets if the frame should be resizable or not.
+ *
+ * @param resizeable {@code true} when the frame should be resizable,
+ * {@code false} if not
+ *
+ * @see Frame#setResizable(boolean)
+ */
void setResizable(boolean resizeable);
+
+ /**
+ * Changes the state of the frame.
+ *
+ * @param state the new state
+ *
+ * @see Frame#setExtendedState(int)
+ */
void setState(int state);
- int getState();
- void setMaximizedBounds(Rectangle bounds); // XXX
+
+ /**
+ * Returns the current state of the frame.
+ *
+ * @return the current state of the frame
+ *
+ * @see Frame#getExtendedState()
+ */
+ int getState();
+
+ /**
+ * Sets the bounds of the frame when it becomes maximized.
+ *
+ * @param bounds the maximized bounds of the frame
+ *
+ * @see Frame#setMaximizedBounds(Rectangle)
+ */
+ void setMaximizedBounds(Rectangle bounds);
+
+ /**
+ * Sets the size and location for embedded frames. (On embedded frames,
+ * setLocation() and setBounds() always set the frame to (0,0) for
+ * backwards compatibility.
+ *
+ * @param x the X location
+ * @param y the Y location
+ * @param width the width of the frame
+ * @param height the height of the frame
+ *
+ * @see EmbeddedFrame#setBoundsPrivate(int, int, int, int)
+ */
+ // TODO: This is only used in EmbeddedFrame, and should probably be moved
+ // into an EmbeddedFramePeer which would extend FramePeer
void setBoundsPrivate(int x, int y, int width, int height);
+
+ /**
+ * Returns the size and location for embedded frames. (On embedded frames,
+ * setLocation() and setBounds() always set the frame to (0,0) for
+ * backwards compatibility.
+ *
+ * @return the bounds of an embedded frame
+ *
+ * @see EmbeddedFrame#getBoundsPrivate()
+ */
+ // TODO: This is only used in EmbeddedFrame, and should probably be moved
+ // into an EmbeddedFramePeer which would extend FramePeer
Rectangle getBoundsPrivate();
+
}
--- a/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -28,11 +28,45 @@
import java.awt.Component;
import java.awt.Window;
+/**
+ * The native peer interface for {@link KeyboardFocusManager}.
+ */
public interface KeyboardFocusManagerPeer {
+
+ /**
+ * Returns the currently focused window.
+ *
+ * @return the currently focused window
+ *
+ * @see KeyboardFocusManager#getNativeFocusedWindow()
+ */
Window getCurrentFocusedWindow();
+ /**
+ * Sets the component that should become the focus owner.
+ *
+ * @param comp the component to become the focus owner
+ *
+ * @see KeyboardFocusManager#setNativeFocusOwner(Component)
+ */
void setCurrentFocusOwner(Component comp);
+
+ /**
+ * Returns the component that currently owns the input focus.
+ *
+ * @return the component that currently owns the input focus
+ *
+ * @see KeyboardFocusManager#getNativeFocusOwner()
+ */
Component getCurrentFocusOwner();
+ /**
+ * Clears the current global focus owner.
+ *
+ * @param activeWindow
+ *
+ * @see KeyboardFocusManager#clearGlobalFocusOwner()
+ */
void clearGlobalFocusOwner(Window activeWindow);
+
}
--- a/jdk/src/share/classes/java/awt/peer/LabelPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/LabelPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,11 @@
*/
package java.awt.peer;
+import java.awt.Label;
+
/**
+ * The peer interface for {@link Label}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -32,6 +36,25 @@
* instances.
*/
public interface LabelPeer extends ComponentPeer {
+
+ /**
+ * Sets the text to be displayed on the label.
+ *
+ * @param label the text to be displayed on the label
+ *
+ * @see Label#setText
+ */
void setText(String label);
+
+ /**
+ * Sets the alignment of the label text.
+ *
+ * @param alignment the alignment of the label text
+ *
+ * @see Label#setAlignment(int)
+ * @see Label#CENTER
+ * @see Label#RIGHT
+ * @see Label#LEFT
+ */
void setAlignment(int alignment);
}
--- a/jdk/src/share/classes/java/awt/peer/ListPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ListPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,11 @@
package java.awt.peer;
import java.awt.Dimension;
+import java.awt.List;
/**
+ * The peer interface for {@link List}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,39 +37,102 @@
* instances.
*/
public interface ListPeer extends ComponentPeer {
+
+ /**
+ * Returns the indices of the list items that are currently selected.
+ * The returned array is not required to be a copy, the callers of this
+ * method already make sure it is not modified.
+ *
+ * @return the indices of the list items that are currently selected
+ *
+ * @see List#getSelectedIndexes()
+ */
int[] getSelectedIndexes();
+
+ /**
+ * Adds an item to the list at the specified index.
+ *
+ * @param item the item to add to the list
+ * @param index the index where to add the item into the list
+ *
+ * @see List#add(String, int)
+ */
void add(String item, int index);
- void delItems(int start, int end);
- void removeAll();
- void select(int index);
- void deselect(int index);
- void makeVisible(int index);
- void setMultipleMode(boolean b);
- Dimension getPreferredSize(int rows);
- Dimension getMinimumSize(int rows);
/**
- * DEPRECATED: Replaced by add(String, int).
+ * Deletes items from the list. All items from start to end should are
+ * deleted, including the item at the start and end indices.
+ *
+ * @param start the first item to be deleted
+ * @param end the last item to be deleted
*/
- void addItem(String item, int index);
+ void delItems(int start, int end);
+
+ /**
+ * Removes all items from the list.
+ *
+ * @see List#removeAll()
+ */
+ void removeAll();
+
+ /**
+ * Selects the item at the specified {@code index}.
+ *
+ * @param index the index of the item to select
+ *
+ * @see List#select(int)
+ */
+ void select(int index);
/**
- * DEPRECATED: Replaced by removeAll().
+ * De-selects the item at the specified {@code index}.
+ *
+ * @param index the index of the item to de-select
+ *
+ * @see List#deselect(int)
*/
- void clear();
+ void deselect(int index);
/**
- * DEPRECATED: Replaced by setMultipleMode(boolean).
+ * Makes sure that the item at the specified {@code index} is visible,
+ * by scrolling the list or similar.
+ *
+ * @param index the index of the item to make visible
+ *
+ * @see List#makeVisible(int)
*/
- void setMultipleSelections(boolean v);
+ void makeVisible(int index);
/**
- * DEPRECATED: Replaced by getPreferredSize(int).
+ * Toggles multiple selection mode on or off.
+ *
+ * @param m {@code true} for multiple selection mode,
+ * {@code false} for single selection mode
+ *
+ * @see List#setMultipleMode(boolean)
*/
- Dimension preferredSize(int v);
+ void setMultipleMode(boolean m);
/**
- * DEPRECATED: Replaced by getMinimumSize(int).
+ * Returns the preferred size for a list with the specified number of rows.
+ *
+ * @param rows the number of rows
+ *
+ * @return the preferred size of the list
+ *
+ * @see List#getPreferredSize(int)
*/
- Dimension minimumSize(int v);
+ Dimension getPreferredSize(int rows);
+
+ /**
+ * Returns the minimum size for a list with the specified number of rows.
+ *
+ * @param rows the number of rows
+ *
+ * @return the minimum size of the list
+ *
+ * @see List#getMinimumSize(int)
+ */
+ Dimension getMinimumSize(int rows);
+
}
--- a/jdk/src/share/classes/java/awt/peer/MenuBarPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuBarPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,11 @@
package java.awt.peer;
import java.awt.Menu;
+import java.awt.MenuBar;
/**
+ * The peer interface for {@link MenuBar}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,7 +37,31 @@
* instances.
*/
public interface MenuBarPeer extends MenuComponentPeer {
+
+ /**
+ * Adds a menu to the menu bar.
+ *
+ * @param m the menu to add
+ *
+ * @see MenuBar#add(Menu)
+ */
void addMenu(Menu m);
+
+ /**
+ * Deletes a menu from the menu bar.
+ *
+ * @param index the index of the menu to remove
+ *
+ * @see MenuBar#remove(int)
+ */
void delMenu(int index);
+
+ /**
+ * Adds a help menu to the menu bar.
+ *
+ * @param m the help menu to add
+ *
+ * @see MenuBar#setHelpMenu(Menu)
+ */
void addHelpMenu(Menu m);
}
--- a/jdk/src/share/classes/java/awt/peer/MenuComponentPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuComponentPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,12 @@
package java.awt.peer;
import java.awt.Font;
+import java.awt.MenuComponent;
/**
+ * The base interface for all kinds of menu components. This is used by
+ * {@link MenuComponent}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,6 +38,20 @@
* instances.
*/
public interface MenuComponentPeer {
+
+ /**
+ * Disposes the menu component.
+ *
+ * @see MenuComponent#removeNotify()
+ */
void dispose();
+
+ /**
+ * Sets the font for the menu component.
+ *
+ * @param f the font to use for the menu component
+ *
+ * @see MenuComponent#setFont(Font)
+ */
void setFont(Font f);
}
--- a/jdk/src/share/classes/java/awt/peer/MenuItemPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuItemPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,11 @@
*/
package java.awt.peer;
+import java.awt.MenuItem;
+
/**
+ * The peer interface for menu items. This is used by {@link MenuItem}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -32,16 +36,20 @@
* instances.
*/
public interface MenuItemPeer extends MenuComponentPeer {
+
+ /**
+ * Sets the label to be displayed in this menu item.
+ *
+ * @param label the label to be displayed
+ */
void setLabel(String label);
- void setEnabled(boolean b);
/**
- * DEPRECATED: Replaced by setEnabled(boolean).
+ * Enables or disables the menu item.
+ *
+ * @param e {@code true} to enable the menu item, {@code false}
+ * to disable it
*/
- void enable();
+ void setEnabled(boolean e);
- /**
- * DEPRECATED: Replaced by setEnabled(boolean).
- */
- void disable();
}
--- a/jdk/src/share/classes/java/awt/peer/MenuPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,9 +24,12 @@
*/
package java.awt.peer;
+import java.awt.Menu;
import java.awt.MenuItem;
/**
+ * The peer interface for menus. This is used by {@link Menu}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,7 +37,29 @@
* instances.
*/
public interface MenuPeer extends MenuItemPeer {
+
+ /**
+ * Adds a separator (e.g. a horizontal line or similar) to the menu.
+ *
+ * @see Menu#addSeparator()
+ */
void addSeparator();
+
+ /**
+ * Adds the specified menu item to the menu.
+ *
+ * @param item the menu item to add
+ *
+ * @see Menu#add(MenuItem)
+ */
void addItem(MenuItem item);
+
+ /**
+ * Removes the menu item at the specified index.
+ *
+ * @param index the index of the item to remove
+ *
+ * @see Menu#remove(int)
+ */
void delItem(int index);
}
--- a/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -29,6 +29,9 @@
import java.awt.Point;
/**
+ * Peer interface for {@link MouseInfo}. This is used to get some additional
+ * information about the mouse.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
--- a/jdk/src/share/classes/java/awt/peer/PanelPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/PanelPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,6 +25,10 @@
package java.awt.peer;
/**
+ * The peer interface for {@link Panel}. This is a subinterface of
+ * ContainerPeer and does not declare any additional methods because a Panel
+ * is just that, a concrete Container.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
--- a/jdk/src/share/classes/java/awt/peer/PopupMenuPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/PopupMenuPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,11 @@
package java.awt.peer;
import java.awt.Event;
+import java.awt.PopupMenu;
/**
+ * The peer interface for {@link PopupMenu}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,5 +37,14 @@
* instances.
*/
public interface PopupMenuPeer extends MenuPeer {
+
+ /**
+ * Shows the popup menu.
+ *
+ * @param e a synthetic event describing the origin and location of the
+ * popup menu
+ *
+ * @see PopupMenu#show(java.awt.Component, int, int)
+ */
void show(Event e);
}
--- a/jdk/src/share/classes/java/awt/peer/RobotPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/RobotPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -39,17 +39,93 @@
*/
public interface RobotPeer
{
- public void mouseMove(int x, int y);
- public void mousePress(int buttons);
- public void mouseRelease(int buttons);
+ /**
+ * Moves the mouse pointer to the specified screen location.
+ *
+ * @param x the X location on screen
+ * @param y the Y location on screen
+ *
+ * @see Robot#mouseMove(int, int)
+ */
+ void mouseMove(int x, int y);
- public void mouseWheel(int wheelAmt);
+ /**
+ * Simulates a mouse press with the specified button(s).
+ *
+ * @param buttons the button mask
+ *
+ * @see Robot#mousePress(int)
+ */
+ void mousePress(int buttons);
+
+ /**
+ * Simulates a mouse release with the specified button(s).
+ *
+ * @param buttons the button mask
+ *
+ * @see Robot#mouseRelease(int)
+ */
+ void mouseRelease(int buttons);
+
+ /**
+ * Simulates mouse wheel action.
+ *
+ * @param wheelAmt number of notches to move the mouse wheel
+ *
+ * @see Robot#mouseWheel(int)
+ */
+ void mouseWheel(int wheelAmt);
- public void keyPress(int keycode);
- public void keyRelease(int keycode);
+ /**
+ * Simulates a key press of the specified key.
+ *
+ * @param keycode the key code to press
+ *
+ * @see Robot#keyPress(int)
+ */
+ void keyPress(int keycode);
+
+ /**
+ * Simulates a key release of the specified key.
+ *
+ * @param keycode the key code to release
+ *
+ * @see Robot#keyRelease(int)
+ */
+ void keyRelease(int keycode);
- public int getRGBPixel(int x, int y);
- public int [] getRGBPixels(Rectangle bounds);
+ /**
+ * Gets the RGB value of the specified pixel on screen.
+ *
+ * @param x the X screen coordinate
+ * @param y the Y screen coordinate
+ *
+ * @return the RGB value of the specified pixel on screen
+ *
+ * @see Robot#getPixelColor(int, int)
+ */
+ int getRGBPixel(int x, int y);
- public void dispose();
+ /**
+ * Gets the RGB values of the specified screen area as an array.
+ *
+ * @param bounds the screen area to capture the RGB values from
+ *
+ * @return the RGB values of the specified screen area
+ *
+ * @see Robot#createScreenCapture(Rectangle)
+ */
+ int[] getRGBPixels(Rectangle bounds);
+
+ /**
+ * Disposes the robot peer when it is not needed anymore.
+ */
+ void dispose();
+
+ /**
+ * Returns the number of buttons that the robot simulates.
+ *
+ * @return the number of buttons that the robot simulates
+ */
+ int getNumberOfButtons();
}
--- a/jdk/src/share/classes/java/awt/peer/ScrollPanePeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ScrollPanePeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,12 @@
package java.awt.peer;
import java.awt.Adjustable;
+import java.awt.ScrollPane;
+import java.awt.ScrollPaneAdjustable;
/**
+ * The peer interface for {@link ScrollPane}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,10 +38,60 @@
* instances.
*/
public interface ScrollPanePeer extends ContainerPeer {
+
+ /**
+ * Returns the height of the horizontal scroll bar.
+ *
+ * @return the height of the horizontal scroll bar
+ *
+ * @see ScrollPane#getHScrollbarHeight()
+ */
int getHScrollbarHeight();
+
+ /**
+ * Returns the width of the vertical scroll bar.
+ *
+ * @return the width of the vertical scroll bar
+ *
+ * @see ScrollPane#getVScrollbarWidth()
+ */
int getVScrollbarWidth();
+
+ /**
+ * Sets the scroll position of the child.
+ *
+ * @param x the X coordinate of the scroll position
+ * @param y the Y coordinate of the scroll position
+ *
+ * @see ScrollPane#setScrollPosition(int, int)
+ */
void setScrollPosition(int x, int y);
+
+ /**
+ * Called when the child component changes its size.
+ *
+ * @param w the new width of the child component
+ * @param h the new height of the child component
+ *
+ * @see ScrollPane#layout()
+ */
void childResized(int w, int h);
+
+ /**
+ * Sets the unit increment of one of the scroll pane's adjustables.
+ *
+ * @param adj the scroll pane adjustable object
+ * @param u the unit increment
+ *
+ * @see ScrollPaneAdjustable#setUnitIncrement(int)
+ */
void setUnitIncrement(Adjustable adj, int u);
+
+ /**
+ * Sets the value for one of the scroll pane's adjustables.
+ *
+ * @param adj the scroll pane adjustable object
+ * @param v the value to set
+ */
void setValue(Adjustable adj, int v);
}
--- a/jdk/src/share/classes/java/awt/peer/ScrollbarPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ScrollbarPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,11 @@
*/
package java.awt.peer;
+import java.awt.Scrollbar;
+
/**
+ * The peer interface for {@link Scrollbar}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -32,7 +36,34 @@
* instances.
*/
public interface ScrollbarPeer extends ComponentPeer {
+
+ /**
+ * Sets the parameters for the scrollbar.
+ *
+ * @param value the current value
+ * @param visible how much of the whole scale is visible
+ * @param minimum the minimum value
+ * @param maximum the maximum value
+ *
+ * @see Scrollbar#setValues(int, int, int, int)
+ */
void setValues(int value, int visible, int minimum, int maximum);
+
+ /**
+ * Sets the line increment of the scrollbar.
+ *
+ * @param l the line increment
+ *
+ * @see Scrollbar#setLineIncrement(int)
+ */
void setLineIncrement(int l);
+
+ /**
+ * Sets the page increment of the scrollbar.
+ *
+ * @param l the page increment
+ *
+ * @see Scrollbar#setPageIncrement(int)
+ */
void setPageIncrement(int l);
}
--- a/jdk/src/share/classes/java/awt/peer/SystemTrayPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/SystemTrayPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -26,7 +26,20 @@
package java.awt.peer;
import java.awt.Dimension;
+import java.awt.SystemTray;
+/**
+ * The peer interface for {@link SystemTray}. This doesn't need to be
+ * implemented if {@link SystemTray#isSupported()} returns false.
+ */
public interface SystemTrayPeer {
+
+ /**
+ * Returns the size of the system tray icon.
+ *
+ * @return the size of the system tray icon
+ *
+ * @see SystemTray#getTrayIconSize()
+ */
Dimension getTrayIconSize();
}
--- a/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,11 @@
package java.awt.peer;
import java.awt.Dimension;
+import java.awt.TextArea;
/**
+ * The peer interface for {@link TexTArea}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,28 +37,52 @@
* instances.
*/
public interface TextAreaPeer extends TextComponentPeer {
- void insert(String text, int pos);
- void replaceRange(String text, int start, int end);
- Dimension getPreferredSize(int rows, int columns);
- Dimension getMinimumSize(int rows, int columns);
/**
- * DEPRECATED: Replaced by insert(String, int).
+ * Inserts the specified text at the specified position in the document.
+ *
+ * @param text the text to insert
+ * @param pos the position to insert
+ *
+ * @see TextArea#insert(String, int)
*/
- void insertText(String txt, int pos);
+ void insert(String text, int pos);
+
+ /**
+ * Replaces a range of text by the specified string
+ *
+ * @param text the replacement string
+ * @param start the begin of the range to replace
+ * @param end the end of the range to replace
+ *
+ * @see TextArea#replaceRange(String, int, int)
+ */
+ void replaceRange(String text, int start, int end);
/**
- * DEPRECATED: Replaced by ReplaceRange(String, int, int).
+ * Returns the preferred size of a textarea with the specified number of
+ * columns and rows.
+ *
+ * @param rows the number of rows
+ * @param columns the number of columns
+ *
+ * @return the preferred size of a textarea
+ *
+ * @see TextArea#getPreferredSize(int, int)
*/
- void replaceText(String txt, int start, int end);
+ Dimension getPreferredSize(int rows, int columns);
/**
- * DEPRECATED: Replaced by getPreferredSize(int, int).
+ * Returns the minimum size of a textarea with the specified number of
+ * columns and rows.
+ *
+ * @param rows the number of rows
+ * @param columns the number of columns
+ *
+ * @return the minimum size of a textarea
+ *
+ * @see TextArea#getMinimumSize(int, int)
*/
- Dimension preferredSize(int rows, int cols);
+ Dimension getMinimumSize(int rows, int columns);
- /**
- * DEPRECATED: Replaced by getMinimumSize(int, int).
- */
- Dimension minimumSize(int rows, int cols);
}
--- a/jdk/src/share/classes/java/awt/peer/TextComponentPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/TextComponentPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,10 +24,12 @@
*/
package java.awt.peer;
-import java.awt.Rectangle;
+import java.awt.TextComponent;
import java.awt.im.InputMethodRequests;
/**
+ * The peer interface for {@link TextComponent}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -35,16 +37,85 @@
* instances.
*/
public interface TextComponentPeer extends ComponentPeer {
+
+ /**
+ * Sets if the text component should be editable or not.
+ *
+ * @param editable {@code true} for editable text components,
+ * {@code false} for non-editable text components
+ *
+ * @see TextComponent#setEditable(boolean)
+ */
void setEditable(boolean editable);
+
+ /**
+ * Returns the current content of the text component.
+ *
+ * @return the current content of the text component
+ *
+ * @see TextComponent#getText()
+ */
String getText();
+
+ /**
+ * Sets the content for the text component.
+ *
+ * @param l the content to set
+ *
+ * @see TextComponent#setText(String)
+ */
void setText(String l);
+
+ /**
+ * Returns the start index of the current selection.
+ *
+ * @return the start index of the current selection
+ *
+ * @see TextComponent#getSelectionStart()
+ */
int getSelectionStart();
+
+ /**
+ * Returns the end index of the current selection.
+ *
+ * @return the end index of the current selection
+ *
+ * @see TextComponent#getSelectionEnd()
+ */
int getSelectionEnd();
+
+ /**
+ * Selects an area of the text component.
+ *
+ * @param selStart the start index of the new selection
+ * @param selEnd the end index of the new selection
+ *
+ * @see TextComponent#select(int, int)
+ */
void select(int selStart, int selEnd);
+
+ /**
+ * Sets the caret position of the text component.
+ *
+ * @param pos the caret position to set
+ *
+ * @see TextComponent#setCaretPosition(int)
+ */
void setCaretPosition(int pos);
+
+ /**
+ * Returns the current caret position.
+ *
+ * @return the current caret position
+ *
+ * @see TextComponent#getCaretPosition()
+ */
int getCaretPosition();
- int getIndexAtPoint(int x, int y);
- Rectangle getCharacterBounds(int i);
- long filterEvents(long mask);
+
+ /**
+ * Returns the input method requests.
+ *
+ * @return the input method requests
+ */
InputMethodRequests getInputMethodRequests();
}
--- a/jdk/src/share/classes/java/awt/peer/TextFieldPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/TextFieldPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,8 +25,11 @@
package java.awt.peer;
import java.awt.Dimension;
+import java.awt.TextField;
/**
+ * The peer interface for {@link TextField}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -34,22 +37,38 @@
* instances.
*/
public interface TextFieldPeer extends TextComponentPeer {
- void setEchoChar(char echoChar);
- Dimension getPreferredSize(int columns);
- Dimension getMinimumSize(int columns);
/**
- * DEPRECATED: Replaced by setEchoChar(char echoChar).
+ * Sets the echo character.
+ *
+ * @param echoChar the echo character to set
+ *
+ * @see TextField#getEchoChar()
*/
- void setEchoCharacter(char c);
+ void setEchoChar(char echoChar);
/**
- * DEPRECATED: Replaced by getPreferredSize(int).
+ * Returns the preferred size of the text field with the specified number
+ * of columns.
+ *
+ * @param columns the number of columns
+ *
+ * @return the preferred size of the text field
+ *
+ * @see TextField#getPreferredSize(int)
*/
- Dimension preferredSize(int cols);
+ Dimension getPreferredSize(int columns);
/**
- * DEPRECATED: Replaced by getMinimumSize(int).
+ * Returns the minimum size of the text field with the specified number
+ * of columns.
+ *
+ * @param columns the number of columns
+ *
+ * @return the minimum size of the text field
+ *
+ * @see TextField#getMinimumSize(int)
*/
- Dimension minimumSize(int cols);
+ Dimension getMinimumSize(int columns);
+
}
--- a/jdk/src/share/classes/java/awt/peer/TrayIconPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/TrayIconPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,10 +25,56 @@
package java.awt.peer;
+import java.awt.SystemTray;
+import java.awt.TrayIcon;
+
+/**
+ * The peer interface for the {@link TrayIcon}. This doesn't need to be
+ * implemented if {@link SystemTray#isSupported()} returns false.
+ */
public interface TrayIconPeer {
+
+ /**
+ * Disposes the tray icon and releases and resources held by it.
+ *
+ * @see TrayIcon#removeNotify()
+ */
void dispose();
+
+ /**
+ * Sets the tool tip for the tray icon.
+ *
+ * @param tooltip the tooltip to set
+ *
+ * @see TrayIcon#setToolTip(String)
+ */
void setToolTip(String tooltip);
+
+ /**
+ * Updates the icon image. This is supposed to display the current icon
+ * from the TrayIcon component in the actual tray icon.
+ *
+ * @see TrayIcon#setImage(java.awt.Image)
+ * @see TrayIcon#setImageAutoSize(boolean)
+ */
void updateImage();
+
+ /**
+ * Displays a message at the tray icon.
+ *
+ * @param caption the message caption
+ * @param text the actual message text
+ * @param messageType the message type
+ *
+ * @see TrayIcon#displayMessage(String, String, java.awt.TrayIcon.MessageType)
+ */
void displayMessage(String caption, String text, String messageType);
+
+ /**
+ * Shows the popup menu of this tray icon at the specified position.
+ *
+ * @param x the X location for the popup menu
+ * @param y the Y location for the popup menu
+ */
void showPopupMenu(int x, int y);
}
--- a/jdk/src/share/classes/java/awt/peer/WindowPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/awt/peer/WindowPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -28,6 +28,8 @@
import java.awt.*;
/**
+ * The peer interface for {@link Window}.
+ *
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
* developers, and developers should not implement peers
@@ -35,12 +37,59 @@
* instances.
*/
public interface WindowPeer extends ContainerPeer {
+
+ /**
+ * Makes this window the topmost window on the desktop.
+ *
+ * @see Window#toFront()
+ */
void toFront();
+
+ /**
+ * Makes this window the bottommost window on the desktop.
+ *
+ * @see Window#toBack()
+ */
void toBack();
+
+ /**
+ * Sets if the window should always stay on top of all other windows or
+ * not.
+ *
+ * @param alwaysOnTop if the window should always stay on top of all other
+ * windows or not
+ *
+ * @see Window#setAlwaysOnTop(boolean)
+ */
void setAlwaysOnTop(boolean alwaysOnTop);
+
+ /**
+ * Updates the window's focusable state.
+ *
+ * @see Window#setFocusableWindowState(boolean)
+ */
void updateFocusableWindowState();
- boolean requestWindowFocus();
+
+ /**
+ * Sets if this window is blocked by a modal dialog or not.
+ *
+ * @param blocker the blocking modal dialog
+ * @param blocked {@code true} to block the window, {@code false}
+ * to unblock it
+ */
void setModalBlocked(Dialog blocker, boolean blocked);
+
+ /**
+ * Updates the minimum size on the peer.
+ *
+ * @see Window#setMinimumSize(Dimension)
+ */
void updateMinimumSize();
+
+ /**
+ * Updates the icons for the window.
+ *
+ * @see Window#setIconImages(java.util.List)
+ */
void updateIconImages();
}
--- a/jdk/src/share/classes/java/io/InputStream.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/io/InputStream.java Thu Feb 26 14:25:55 2009 -0800
@@ -90,7 +90,7 @@
*
* @param b the buffer into which the data is read.
* @return the total number of bytes read into the buffer, or
- * <code>-1</code> is there is no more data because the end of
+ * <code>-1</code> if there is no more data because the end of
* the stream has been reached.
* @exception IOException If the first byte cannot be read for any reason
* other than the end of the file, if the input stream has been closed, or
--- a/jdk/src/share/classes/java/lang/Enum.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/lang/Enum.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-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
@@ -34,6 +34,13 @@
/**
* This is the common base class of all Java language enumeration types.
*
+ * More information about enums, including descriptions of the
+ * implicitly declared methods synthesized by the compiler, can be
+ * found in <i>The Java™ Language Specification, Third
+ * Edition</i>, <a
+ * href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9">§8.9</a>.
+ *
+ * @param <E> The enum type subclass
* @author Josh Bloch
* @author Neal Gafter
* @see Class#getEnumConstants()
@@ -192,6 +199,15 @@
* to declare an enum constant in this type. (Extraneous whitespace
* characters are not permitted.)
*
+ * <p>Note that for a particular enum type {@code T}, the
+ * implicitly declared {@code public static T valueOf(String)}
+ * method on that enum may be used instead of this method to map
+ * from a name to the corresponding enum constant. All the
+ * constants of an enum type can be obtained by calling the
+ * implicit {@code public static T[] values()} method of that
+ * type.
+ *
+ * @param <T> The enum type whose constant is to be returned
* @param enumType the {@code Class} object of the enum type from which
* to return a constant
* @param name the name of the constant to return
@@ -212,7 +228,7 @@
if (name == null)
throw new NullPointerException("Name is null");
throw new IllegalArgumentException(
- "No enum const " + enumType +"." + name);
+ "No enum constant " + enumType.getCanonicalName() + "." + name);
}
/**
@@ -225,10 +241,10 @@
*/
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
- throw new InvalidObjectException("can't deserialize enum");
+ throw new InvalidObjectException("can't deserialize enum");
}
private void readObjectNoData() throws ObjectStreamException {
- throw new InvalidObjectException("can't deserialize enum");
+ throw new InvalidObjectException("can't deserialize enum");
}
}
--- a/jdk/src/share/classes/java/lang/Object.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/lang/Object.java Thu Feb 26 14:25:55 2009 -0800
@@ -26,8 +26,8 @@
package java.lang;
/**
- * Class <code>Object</code> is the root of the class hierarchy.
- * Every class has <code>Object</code> as a superclass. All objects,
+ * Class {@code Object} is the root of the class hierarchy.
+ * Every class has {@code Object} as a superclass. All objects,
* including arrays, implement the methods of this class.
*
* @author unascribed
@@ -66,30 +66,30 @@
/**
* Returns a hash code value for the object. This method is
- * supported for the benefit of hashtables such as those provided by
- * <code>java.util.Hashtable</code>.
+ * supported for the benefit of hash tables such as those provided by
+ * {@link java.util.HashMap}.
* <p>
- * The general contract of <code>hashCode</code> is:
+ * The general contract of {@code hashCode} is:
* <ul>
* <li>Whenever it is invoked on the same object more than once during
- * an execution of a Java application, the <tt>hashCode</tt> method
+ * an execution of a Java application, the {@code hashCode} method
* must consistently return the same integer, provided no information
- * used in <tt>equals</tt> comparisons on the object is modified.
+ * used in {@code equals} comparisons on the object is modified.
* This integer need not remain consistent from one execution of an
* application to another execution of the same application.
- * <li>If two objects are equal according to the <tt>equals(Object)</tt>
- * method, then calling the <code>hashCode</code> method on each of
+ * <li>If two objects are equal according to the {@code equals(Object)}
+ * method, then calling the {@code hashCode} method on each of
* the two objects must produce the same integer result.
* <li>It is <em>not</em> required that if two objects are unequal
* according to the {@link java.lang.Object#equals(java.lang.Object)}
- * method, then calling the <tt>hashCode</tt> method on each of the
+ * method, then calling the {@code hashCode} method on each of the
* two objects must produce distinct integer results. However, the
* programmer should be aware that producing distinct integer results
- * for unequal objects may improve the performance of hashtables.
+ * for unequal objects may improve the performance of hash tables.
* </ul>
* <p>
* As much as is reasonably practical, the hashCode method defined by
- * class <tt>Object</tt> does return distinct integers for distinct
+ * class {@code Object} does return distinct integers for distinct
* objects. (This is typically implemented by converting the internal
* address of the object into an integer, but this implementation
* technique is not required by the
@@ -97,55 +97,55 @@
*
* @return a hash code value for this object.
* @see java.lang.Object#equals(java.lang.Object)
- * @see java.util.Hashtable
+ * @see java.lang.System#identityHashCode
*/
public native int hashCode();
/**
* Indicates whether some other object is "equal to" this one.
* <p>
- * The <code>equals</code> method implements an equivalence relation
+ * The {@code equals} method implements an equivalence relation
* on non-null object references:
* <ul>
* <li>It is <i>reflexive</i>: for any non-null reference value
- * <code>x</code>, <code>x.equals(x)</code> should return
- * <code>true</code>.
+ * {@code x}, {@code x.equals(x)} should return
+ * {@code true}.
* <li>It is <i>symmetric</i>: for any non-null reference values
- * <code>x</code> and <code>y</code>, <code>x.equals(y)</code>
- * should return <code>true</code> if and only if
- * <code>y.equals(x)</code> returns <code>true</code>.
+ * {@code x} and {@code y}, {@code x.equals(y)}
+ * should return {@code true} if and only if
+ * {@code y.equals(x)} returns {@code true}.
* <li>It is <i>transitive</i>: for any non-null reference values
- * <code>x</code>, <code>y</code>, and <code>z</code>, if
- * <code>x.equals(y)</code> returns <code>true</code> and
- * <code>y.equals(z)</code> returns <code>true</code>, then
- * <code>x.equals(z)</code> should return <code>true</code>.
+ * {@code x}, {@code y}, and {@code z}, if
+ * {@code x.equals(y)} returns {@code true} and
+ * {@code y.equals(z)} returns {@code true}, then
+ * {@code x.equals(z)} should return {@code true}.
* <li>It is <i>consistent</i>: for any non-null reference values
- * <code>x</code> and <code>y</code>, multiple invocations of
- * <tt>x.equals(y)</tt> consistently return <code>true</code>
- * or consistently return <code>false</code>, provided no
- * information used in <code>equals</code> comparisons on the
+ * {@code x} and {@code y}, multiple invocations of
+ * {@code x.equals(y)} consistently return {@code true}
+ * or consistently return {@code false}, provided no
+ * information used in {@code equals} comparisons on the
* objects is modified.
- * <li>For any non-null reference value <code>x</code>,
- * <code>x.equals(null)</code> should return <code>false</code>.
+ * <li>For any non-null reference value {@code x},
+ * {@code x.equals(null)} should return {@code false}.
* </ul>
* <p>
- * The <tt>equals</tt> method for class <code>Object</code> implements
+ * The {@code equals} method for class {@code Object} implements
* the most discriminating possible equivalence relation on objects;
- * that is, for any non-null reference values <code>x</code> and
- * <code>y</code>, this method returns <code>true</code> if and only
- * if <code>x</code> and <code>y</code> refer to the same object
- * (<code>x == y</code> has the value <code>true</code>).
+ * that is, for any non-null reference values {@code x} and
+ * {@code y}, this method returns {@code true} if and only
+ * if {@code x} and {@code y} refer to the same object
+ * ({@code x == y} has the value {@code true}).
* <p>
- * Note that it is generally necessary to override the <tt>hashCode</tt>
+ * Note that it is generally necessary to override the {@code hashCode}
* method whenever this method is overridden, so as to maintain the
- * general contract for the <tt>hashCode</tt> method, which states
+ * general contract for the {@code hashCode} method, which states
* that equal objects must have equal hash codes.
*
* @param obj the reference object with which to compare.
- * @return <code>true</code> if this object is the same as the obj
- * argument; <code>false</code> otherwise.
+ * @return {@code true} if this object is the same as the obj
+ * argument; {@code false} otherwise.
* @see #hashCode()
- * @see java.util.Hashtable
+ * @see java.util.HashMap
*/
public boolean equals(Object obj) {
return (this == obj);
@@ -154,7 +154,7 @@
/**
* Creates and returns a copy of this object. The precise meaning
* of "copy" may depend on the class of the object. The general
- * intent is that, for any object <tt>x</tt>, the expression:
+ * intent is that, for any object {@code x}, the expression:
* <blockquote>
* <pre>
* x.clone() != x</pre></blockquote>
@@ -162,49 +162,49 @@
* <blockquote>
* <pre>
* x.clone().getClass() == x.getClass()</pre></blockquote>
- * will be <tt>true</tt>, but these are not absolute requirements.
+ * will be {@code true}, but these are not absolute requirements.
* While it is typically the case that:
* <blockquote>
* <pre>
* x.clone().equals(x)</pre></blockquote>
- * will be <tt>true</tt>, this is not an absolute requirement.
+ * will be {@code true}, this is not an absolute requirement.
* <p>
* By convention, the returned object should be obtained by calling
- * <tt>super.clone</tt>. If a class and all of its superclasses (except
- * <tt>Object</tt>) obey this convention, it will be the case that
- * <tt>x.clone().getClass() == x.getClass()</tt>.
+ * {@code super.clone}. If a class and all of its superclasses (except
+ * {@code Object}) obey this convention, it will be the case that
+ * {@code x.clone().getClass() == x.getClass()}.
* <p>
* By convention, the object returned by this method should be independent
* of this object (which is being cloned). To achieve this independence,
* it may be necessary to modify one or more fields of the object returned
- * by <tt>super.clone</tt> before returning it. Typically, this means
+ * by {@code super.clone} before returning it. Typically, this means
* copying any mutable objects that comprise the internal "deep structure"
* of the object being cloned and replacing the references to these
* objects with references to the copies. If a class contains only
* primitive fields or references to immutable objects, then it is usually
- * the case that no fields in the object returned by <tt>super.clone</tt>
+ * the case that no fields in the object returned by {@code super.clone}
* need to be modified.
* <p>
- * The method <tt>clone</tt> for class <tt>Object</tt> performs a
+ * The method {@code clone} for class {@code Object} performs a
* specific cloning operation. First, if the class of this object does
- * not implement the interface <tt>Cloneable</tt>, then a
- * <tt>CloneNotSupportedException</tt> is thrown. Note that all arrays
- * are considered to implement the interface <tt>Cloneable</tt>.
+ * not implement the interface {@code Cloneable}, then a
+ * {@code CloneNotSupportedException} is thrown. Note that all arrays
+ * are considered to implement the interface {@code Cloneable}.
* Otherwise, this method creates a new instance of the class of this
* object and initializes all its fields with exactly the contents of
* the corresponding fields of this object, as if by assignment; the
* contents of the fields are not themselves cloned. Thus, this method
* performs a "shallow copy" of this object, not a "deep copy" operation.
* <p>
- * The class <tt>Object</tt> does not itself implement the interface
- * <tt>Cloneable</tt>, so calling the <tt>clone</tt> method on an object
- * whose class is <tt>Object</tt> will result in throwing an
+ * The class {@code Object} does not itself implement the interface
+ * {@code Cloneable}, so calling the {@code clone} method on an object
+ * whose class is {@code Object} will result in throwing an
* exception at run time.
*
* @return a clone of this instance.
* @exception CloneNotSupportedException if the object's class does not
- * support the <code>Cloneable</code> interface. Subclasses
- * that override the <code>clone</code> method can also
+ * support the {@code Cloneable} interface. Subclasses
+ * that override the {@code clone} method can also
* throw this exception to indicate that an instance cannot
* be cloned.
* @see java.lang.Cloneable
@@ -213,15 +213,15 @@
/**
* Returns a string representation of the object. In general, the
- * <code>toString</code> method returns a string that
+ * {@code toString} method returns a string that
* "textually represents" this object. The result should
* be a concise but informative representation that is easy for a
* person to read.
* It is recommended that all subclasses override this method.
* <p>
- * The <code>toString</code> method for class <code>Object</code>
+ * The {@code toString} method for class {@code Object}
* returns a string consisting of the name of the class of which the
- * object is an instance, the at-sign character `<code>@</code>', and
+ * object is an instance, the at-sign character `{@code @}', and
* the unsigned hexadecimal representation of the hash code of the
* object. In other words, this method returns a string equal to the
* value of:
@@ -241,7 +241,7 @@
* monitor. If any threads are waiting on this object, one of them
* is chosen to be awakened. The choice is arbitrary and occurs at
* the discretion of the implementation. A thread waits on an object's
- * monitor by calling one of the <code>wait</code> methods.
+ * monitor by calling one of the {@code wait} methods.
* <p>
* The awakened thread will not be able to proceed until the current
* thread relinquishes the lock on this object. The awakened thread will
@@ -255,9 +255,9 @@
* object's monitor in one of three ways:
* <ul>
* <li>By executing a synchronized instance method of that object.
- * <li>By executing the body of a <code>synchronized</code> statement
+ * <li>By executing the body of a {@code synchronized} statement
* that synchronizes on the object.
- * <li>For objects of type <code>Class,</code> by executing a
+ * <li>For objects of type {@code Class,} by executing a
* synchronized static method of that class.
* </ul>
* <p>
@@ -273,7 +273,7 @@
/**
* Wakes up all threads that are waiting on this object's monitor. A
* thread waits on an object's monitor by calling one of the
- * <code>wait</code> methods.
+ * {@code wait} methods.
* <p>
* The awakened threads will not be able to proceed until the current
* thread relinquishes the lock on this object. The awakened threads
@@ -283,7 +283,7 @@
* being the next thread to lock this object.
* <p>
* This method should only be called by a thread that is the owner
- * of this object's monitor. See the <code>notify</code> method for a
+ * of this object's monitor. See the {@code notify} method for a
* description of the ways in which a thread can become the owner of
* a monitor.
*
@@ -308,15 +308,15 @@
* becomes disabled for thread scheduling purposes and lies dormant
* until one of four things happens:
* <ul>
- * <li>Some other thread invokes the <tt>notify</tt> method for this
+ * <li>Some other thread invokes the {@code notify} method for this
* object and thread <var>T</var> happens to be arbitrarily chosen as
* the thread to be awakened.
- * <li>Some other thread invokes the <tt>notifyAll</tt> method for this
+ * <li>Some other thread invokes the {@code notifyAll} method for this
* object.
* <li>Some other thread {@linkplain Thread#interrupt() interrupts}
* thread <var>T</var>.
* <li>The specified amount of real time has elapsed, more or less. If
- * <tt>timeout</tt> is zero, however, then real time is not taken into
+ * {@code timeout} is zero, however, then real time is not taken into
* consideration and the thread simply waits until notified.
* </ul>
* The thread <var>T</var> is then removed from the wait set for this
@@ -324,11 +324,11 @@
* usual manner with other threads for the right to synchronize on the
* object; once it has gained control of the object, all its
* synchronization claims on the object are restored to the status quo
- * ante - that is, to the situation as of the time that the <tt>wait</tt>
+ * ante - that is, to the situation as of the time that the {@code wait}
* method was invoked. Thread <var>T</var> then returns from the
- * invocation of the <tt>wait</tt> method. Thus, on return from the
- * <tt>wait</tt> method, the synchronization state of the object and of
- * thread <tt>T</tt> is exactly as it was when the <tt>wait</tt> method
+ * invocation of the {@code wait} method. Thus, on return from the
+ * {@code wait} method, the synchronization state of the object and of
+ * thread {@code T} is exactly as it was when the {@code wait} method
* was invoked.
* <p>
* A thread can also wake up without being notified, interrupted, or
@@ -351,18 +351,18 @@
*
* <p>If the current thread is {@linkplain java.lang.Thread#interrupt()
* interrupted} by any thread before or while it is waiting, then an
- * <tt>InterruptedException</tt> is thrown. This exception is not
+ * {@code InterruptedException} is thrown. This exception is not
* thrown until the lock status of this object has been restored as
* described above.
*
* <p>
- * Note that the <tt>wait</tt> method, as it places the current thread
+ * Note that the {@code wait} method, as it places the current thread
* into the wait set for this object, unlocks only this object; any
* other objects on which the current thread may be synchronized remain
* locked while the thread waits.
* <p>
* This method should only be called by a thread that is the owner
- * of this object's monitor. See the <code>notify</code> method for a
+ * of this object's monitor. See the {@code notify} method for a
* description of the ways in which a thread can become the owner of
* a monitor.
*
@@ -388,7 +388,7 @@
* some other thread interrupts the current thread, or a certain
* amount of real time has elapsed.
* <p>
- * This method is similar to the <code>wait</code> method of one
+ * This method is similar to the {@code wait} method of one
* argument, but it allows finer control over the amount of time to
* wait for a notification before giving up. The amount of real time,
* measured in nanoseconds, is given by:
@@ -398,17 +398,17 @@
* <p>
* In all other respects, this method does the same thing as the
* method {@link #wait(long)} of one argument. In particular,
- * <tt>wait(0, 0)</tt> means the same thing as <tt>wait(0)</tt>.
+ * {@code wait(0, 0)} means the same thing as {@code wait(0)}.
* <p>
* The current thread must own this object's monitor. The thread
* releases ownership of this monitor and waits until either of the
* following two conditions has occurred:
* <ul>
* <li>Another thread notifies threads waiting on this object's monitor
- * to wake up either through a call to the <code>notify</code> method
- * or the <code>notifyAll</code> method.
- * <li>The timeout period, specified by <code>timeout</code>
- * milliseconds plus <code>nanos</code> nanoseconds arguments, has
+ * to wake up either through a call to the {@code notify} method
+ * or the {@code notifyAll} method.
+ * <li>The timeout period, specified by {@code timeout}
+ * milliseconds plus {@code nanos} nanoseconds arguments, has
* elapsed.
* </ul>
* <p>
@@ -425,7 +425,7 @@
* }
* </pre>
* This method should only be called by a thread that is the owner
- * of this object's monitor. See the <code>notify</code> method for a
+ * of this object's monitor. See the {@code notify} method for a
* description of the ways in which a thread can become the owner of
* a monitor.
*
@@ -465,13 +465,13 @@
* {@link java.lang.Object#notify()} method or the
* {@link java.lang.Object#notifyAll()} method for this object.
* In other words, this method behaves exactly as if it simply
- * performs the call <tt>wait(0)</tt>.
+ * performs the call {@code wait(0)}.
* <p>
* The current thread must own this object's monitor. The thread
* releases ownership of this monitor and waits until another thread
* notifies threads waiting on this object's monitor to wake up
- * either through a call to the <code>notify</code> method or the
- * <code>notifyAll</code> method. The thread then waits until it can
+ * either through a call to the {@code notify} method or the
+ * {@code notifyAll} method. The thread then waits until it can
* re-obtain ownership of the monitor and resumes execution.
* <p>
* As in the one argument version, interrupts and spurious wakeups are
@@ -484,7 +484,7 @@
* }
* </pre>
* This method should only be called by a thread that is the owner
- * of this object's monitor. See the <code>notify</code> method for a
+ * of this object's monitor. See the {@code notify} method for a
* description of the ways in which a thread can become the owner of
* a monitor.
*
@@ -505,49 +505,49 @@
/**
* Called by the garbage collector on an object when garbage collection
* determines that there are no more references to the object.
- * A subclass overrides the <code>finalize</code> method to dispose of
+ * A subclass overrides the {@code finalize} method to dispose of
* system resources or to perform other cleanup.
* <p>
- * The general contract of <tt>finalize</tt> is that it is invoked
+ * The general contract of {@code finalize} is that it is invoked
* if and when the Java<font size="-2"><sup>TM</sup></font> virtual
* machine has determined that there is no longer any
* means by which this object can be accessed by any thread that has
* not yet died, except as a result of an action taken by the
* finalization of some other object or class which is ready to be
- * finalized. The <tt>finalize</tt> method may take any action, including
+ * finalized. The {@code finalize} method may take any action, including
* making this object available again to other threads; the usual purpose
- * of <tt>finalize</tt>, however, is to perform cleanup actions before
+ * of {@code finalize}, however, is to perform cleanup actions before
* the object is irrevocably discarded. For example, the finalize method
* for an object that represents an input/output connection might perform
* explicit I/O transactions to break the connection before the object is
* permanently discarded.
* <p>
- * The <tt>finalize</tt> method of class <tt>Object</tt> performs no
+ * The {@code finalize} method of class {@code Object} performs no
* special action; it simply returns normally. Subclasses of
- * <tt>Object</tt> may override this definition.
+ * {@code Object} may override this definition.
* <p>
* The Java programming language does not guarantee which thread will
- * invoke the <tt>finalize</tt> method for any given object. It is
+ * invoke the {@code finalize} method for any given object. It is
* guaranteed, however, that the thread that invokes finalize will not
* be holding any user-visible synchronization locks when finalize is
* invoked. If an uncaught exception is thrown by the finalize method,
* the exception is ignored and finalization of that object terminates.
* <p>
- * After the <tt>finalize</tt> method has been invoked for an object, no
+ * After the {@code finalize} method has been invoked for an object, no
* further action is taken until the Java virtual machine has again
* determined that there is no longer any means by which this object can
* be accessed by any thread that has not yet died, including possible
* actions by other objects or classes which are ready to be finalized,
* at which point the object may be discarded.
* <p>
- * The <tt>finalize</tt> method is never invoked more than once by a Java
+ * The {@code finalize} method is never invoked more than once by a Java
* virtual machine for any given object.
* <p>
- * Any exception thrown by the <code>finalize</code> method causes
+ * Any exception thrown by the {@code finalize} method causes
* the finalization of this object to be halted, but is otherwise
* ignored.
*
- * @throws Throwable the <code>Exception</code> raised by this method
+ * @throws Throwable the {@code Exception} raised by this method
*/
protected void finalize() throws Throwable { }
}
--- a/jdk/src/share/classes/java/lang/RuntimePermission.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/lang/RuntimePermission.java Thu Feb 26 14:25:55 2009 -0800
@@ -100,6 +100,13 @@
* </tr>
*
* <tr>
+ * <td>closeClassLoader</td>
+ * <td>Closing of a ClassLoader</td>
+ * <td>Granting this permission allows code to close any URLClassLoader
+ * that it has a reference to.</td>
+ * </tr>
+ *
+ * <tr>
* <td>setSecurityManager</td>
* <td>Setting of the security manager (possibly replacing an existing one)
* </td>
--- a/jdk/src/share/classes/java/lang/annotation/Annotation.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/lang/annotation/Annotation.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-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
@@ -31,6 +31,10 @@
* an annotation type. Also note that this interface does not itself
* define an annotation type.
*
+ * More information about annotation types can be found in <i>The
+ * Java™ Language Specification, Third Edition</i>, <a
+ * href="http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.6">§9.6</a>.
+ *
* @author Josh Bloch
* @since 1.5
*/
--- a/jdk/src/share/classes/java/lang/instrument/package.html Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/lang/instrument/package.html Thu Feb 26 14:25:55 2009 -0800
@@ -1,3 +1,28 @@
+<!--
+ Copyright 2003-2006 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.
+-->
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
--- a/jdk/src/share/classes/java/net/CookieManager.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/net/CookieManager.java Thu Feb 26 14:25:55 2009 -0800
@@ -107,8 +107,9 @@
* </ul>
* </blockquote>
*
- * <p>The implementation conforms to RFC 2965, section 3.3.
+ * <p>The implementation conforms to <a href="http://www.ietf.org/rfc/rfc2965.txt">RFC 2965</a>, section 3.3.
*
+ * @see CookiePolicy
* @author Edward Wang
* @since 1.6
*/
--- a/jdk/src/share/classes/java/net/HttpCookie.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/net/HttpCookie.java Thu Feb 26 14:25:55 2009 -0800
@@ -33,6 +33,7 @@
import java.util.Date;
import java.lang.NullPointerException; // for javadoc
+import java.util.Locale;
/**
* An HttpCookie object represents an http cookie, which carries state
@@ -1058,8 +1059,7 @@
if (assignor != null) {
assignor.assign(cookie, attrName, attrValue);
} else {
- // must be an error
- throw new IllegalArgumentException("Illegal cookie attribute");
+ // Ignore the attribute as per RFC 2965
}
}
@@ -1097,7 +1097,7 @@
static {
cDateFormats = new SimpleDateFormat[COOKIE_DATE_FORMATS.length];
for (int i = 0; i < COOKIE_DATE_FORMATS.length; i++) {
- cDateFormats[i] = new SimpleDateFormat(COOKIE_DATE_FORMATS[i]);
+ cDateFormats[i] = new SimpleDateFormat(COOKIE_DATE_FORMATS[i], Locale.US);
cDateFormats[i].setTimeZone(TimeZone.getTimeZone("GMT"));
}
}
--- a/jdk/src/share/classes/java/net/URLClassLoader.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/net/URLClassLoader.java Thu Feb 26 14:25:55 2009 -0800
@@ -31,10 +31,12 @@
import java.io.FilePermission;
import java.io.InputStream;
import java.io.IOException;
+import java.io.Closeable;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandlerFactory;
import java.util.Enumeration;
+import java.util.List;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import java.util.jar.Manifest;
@@ -70,7 +72,7 @@
* @author David Connelly
* @since 1.2
*/
-public class URLClassLoader extends SecureClassLoader {
+public class URLClassLoader extends SecureClassLoader implements Closeable {
/* The search path for classes and resources */
URLClassPath ucp;
@@ -85,13 +87,13 @@
* to refer to a JAR file which will be downloaded and opened as needed.
*
* <p>If there is a security manager, this method first
- * calls the security manager's <code>checkCreateClassLoader</code> method
+ * calls the security manager's {@code checkCreateClassLoader} method
* to ensure creation of a class loader is allowed.
*
* @param urls the URLs from which to load classes and resources
* @param parent the parent class loader for delegation
* @exception SecurityException if a security manager exists and its
- * <code>checkCreateClassLoader</code> method doesn't allow
+ * {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
* @see SecurityManager#checkCreateClassLoader
*/
@@ -169,12 +171,65 @@
acc = AccessController.getContext();
}
+
+ /**
+ * Closes this URLClassLoader, so that it can no longer be used to load
+ * new classes or resources that are defined by this loader.
+ * Classes and resources defined by any of this loader's parents in the
+ * delegation hierarchy are still accessible. Also, any classes or resources
+ * that are already loaded, are still accessible.
+ * <p>
+ * In the case of jar: and file: URLs, it also closes any class files,
+ * or JAR files that were opened by it. If another thread is loading a
+ * class when the {@code close} method is invoked, then the result of
+ * that load is undefined.
+ * <p>
+ * The method makes a best effort attempt to close all opened files,
+ * by catching {@link IOException}s internally. Unchecked exceptions
+ * and errors are not caught. Calling close on an already closed
+ * loader has no effect.
+ * <p>
+ * @throws IOException if closing any file opened by this class loader
+ * resulted in an IOException. Any such exceptions are caught, and a
+ * single IOException is thrown after the last file has been closed.
+ * If only one exception was thrown, it will be set as the <i>cause</i>
+ * of this IOException.
+ *
+ * @throws SecurityException if a security manager is set, and it denies
+ * {@link RuntimePermission}<tt>("closeClassLoader")</tt>
+ *
+ * @since 1.7
+ */
+ public void close() throws IOException {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPermission(new RuntimePermission("closeClassLoader"));
+ }
+ List<IOException> errors = ucp.closeLoaders();
+ if (errors.isEmpty()) {
+ return;
+ }
+ if (errors.size() == 1) {
+ throw new IOException (
+ "Error closing URLClassLoader resource",
+ errors.get(0)
+ );
+ }
+ // Several exceptions. So, just combine the error messages
+ String errormsg = "Error closing resources: ";
+ for (IOException error: errors) {
+ errormsg = errormsg + "[" + error.toString() + "] ";
+ }
+ throw new IOException (errormsg);
+ }
+
/**
* Appends the specified URL to the list of URLs to search for
* classes and resources.
* <p>
* If the URL specified is <code>null</code> or is already in the
- * list of URLs, then invoking this method has no effect.
+ * list of URLs, or if this loader is closed, then invoking this
+ * method has no effect.
*
* @param url the URL to be added to the search path of URLs
*/
@@ -199,7 +254,8 @@
*
* @param name the name of the class
* @return the resulting class
- * @exception ClassNotFoundException if the class could not be found
+ * @exception ClassNotFoundException if the class could not be found,
+ * or if the loader is closed.
*/
protected Class<?> findClass(final String name)
throws ClassNotFoundException
@@ -370,7 +426,7 @@
*
* @param name the name of the resource
* @return a <code>URL</code> for the resource, or <code>null</code>
- * if the resource could not be found.
+ * if the resource could not be found, or if the loader is closed.
*/
public URL findResource(final String name) {
/*
@@ -393,6 +449,7 @@
* @param name the resource name
* @exception IOException if an I/O exception occurs
* @return an <code>Enumeration</code> of <code>URL</code>s
+ * If the loader is closed, the Enumeration will be empty.
*/
public Enumeration<URL> findResources(final String name)
throws IOException
--- a/jdk/src/share/classes/java/util/Formatter.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/util/Formatter.java Thu Feb 26 14:25:55 2009 -0800
@@ -59,7 +59,7 @@
* An interpreter for printf-style format strings. This class provides support
* for layout justification and alignment, common formats for numeric, string,
* and date/time data, and locale-specific output. Common Java types such as
- * <tt>byte</tt>, {@link java.math.BigDecimal BigDecimal}, and {@link Calendar}
+ * {@code byte}, {@link java.math.BigDecimal BigDecimal}, and {@link Calendar}
* are supported. Limited formatting customization for arbitrary user types is
* provided through the {@link Formattable} interface.
*
@@ -68,7 +68,7 @@
* class.
*
* <p> Formatted printing for the Java language is heavily inspired by C's
- * <tt>printf</tt>. Although the format strings are similar to C, some
+ * {@code printf}. Although the format strings are similar to C, some
* customizations have been made to accommodate the Java language and exploit
* some of its features. Also, Java formatting is more strict than C's; for
* example, if a conversion is incompatible with a flag, an exception will be
@@ -115,7 +115,7 @@
* // -> "Unable to open file 'food': No such file or directory"
* </pre></blockquote>
*
- * <p> Like C's <tt>sprintf(3)</tt>, Strings may be formatted using the static
+ * <p> Like C's {@code sprintf(3)}, Strings may be formatted using the static
* method {@link String#format(String,Object...) String.format}:
*
* <blockquote><pre>
@@ -157,16 +157,16 @@
* String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
* </pre></blockquote>
*
- * This format string is the first argument to the <tt>format</tt> method. It
- * contains three format specifiers "<tt>%1$tm</tt>", "<tt>%1$te</tt>", and
- * "<tt>%1$tY</tt>" which indicate how the arguments should be processed and
+ * This format string is the first argument to the {@code format} method. It
+ * contains three format specifiers "{@code %1$tm}", "{@code %1$te}", and
+ * "{@code %1$tY}" which indicate how the arguments should be processed and
* where they should be inserted in the text. The remaining portions of the
- * format string are fixed text including <tt>"Dukes Birthday: "</tt> and any
+ * format string are fixed text including {@code "Dukes Birthday: "} and any
* other spaces or punctuation.
*
* The argument list consists of all arguments passed to the method after the
* format string. In the above example, the argument list is of size one and
- * consists of the {@link java.util.Calendar Calendar} object <tt>c</tt>.
+ * consists of the {@link java.util.Calendar Calendar} object {@code c}.
*
* <ul>
*
@@ -179,7 +179,7 @@
*
* <p> The optional <i>argument_index</i> is a decimal integer indicating the
* position of the argument in the argument list. The first argument is
- * referenced by "<tt>1$</tt>", the second by "<tt>2$</tt>", etc.
+ * referenced by "{@code 1$}", the second by "{@code 2$}", etc.
*
* <p> The optional <i>flags</i> is a set of characters that modify the output
* format. The set of valid flags depends on the conversion.
@@ -206,10 +206,10 @@
* defined as above.
*
* <p> The required <i>conversion</i> is a two character sequence. The first
- * character is <tt>'t'</tt> or <tt>'T'</tt>. The second character indicates
+ * character is {@code 't'} or {@code 'T'}. The second character indicates
* the format to be used. These characters are similar to but not completely
- * identical to those defined by GNU <tt>date</tt> and POSIX
- * <tt>strftime(3c)</tt>.
+ * identical to those defined by GNU {@code date} and POSIX
+ * {@code strftime(3c)}.
*
* <li> The format specifiers which do not correspond to arguments have the
* following syntax:
@@ -235,31 +235,31 @@
* type
*
* <li> <b>Character</b> - may be applied to basic types which represent
- * Unicode characters: <tt>char</tt>, {@link Character}, <tt>byte</tt>, {@link
- * Byte}, <tt>short</tt>, and {@link Short}. This conversion may also be
- * applied to the types <tt>int</tt> and {@link Integer} when {@link
- * Character#isValidCodePoint} returns <tt>true</tt>
+ * Unicode characters: {@code char}, {@link Character}, {@code byte}, {@link
+ * Byte}, {@code short}, and {@link Short}. This conversion may also be
+ * applied to the types {@code int} and {@link Integer} when {@link
+ * Character#isValidCodePoint} returns {@code true}
*
* <li> <b>Numeric</b>
*
* <ol>
*
- * <li> <b>Integral</b> - may be applied to Java integral types: <tt>byte</tt>,
- * {@link Byte}, <tt>short</tt>, {@link Short}, <tt>int</tt> and {@link
- * Integer}, <tt>long</tt>, {@link Long}, and {@link java.math.BigInteger
+ * <li> <b>Integral</b> - may be applied to Java integral types: {@code byte},
+ * {@link Byte}, {@code short}, {@link Short}, {@code int} and {@link
+ * Integer}, {@code long}, {@link Long}, and {@link java.math.BigInteger
* BigInteger}
*
* <li><b>Floating Point</b> - may be applied to Java floating-point types:
- * <tt>float</tt>, {@link Float}, <tt>double</tt>, {@link Double}, and {@link
+ * {@code float}, {@link Float}, {@code double}, {@link Double}, and {@link
* java.math.BigDecimal BigDecimal}
*
* </ol>
*
* <li> <b>Date/Time</b> - may be applied to Java types which are capable of
- * encoding a date or time: <tt>long</tt>, {@link Long}, {@link Calendar}, and
+ * encoding a date or time: {@code long}, {@link Long}, {@link Calendar}, and
* {@link Date}.
*
- * <li> <b>Percent</b> - produces a literal <tt>'%'</tt>
+ * <li> <b>Percent</b> - produces a literal {@code '%'}
* (<tt>'\u0025'</tt>)
*
* <li> <b>Line Separator</b> - produces the platform-specific line separator
@@ -267,9 +267,9 @@
* </ol>
*
* <p> The following table summarizes the supported conversions. Conversions
- * denoted by an upper-case character (i.e. <tt>'B'</tt>, <tt>'H'</tt>,
- * <tt>'S'</tt>, <tt>'C'</tt>, <tt>'X'</tt>, <tt>'E'</tt>, <tt>'G'</tt>,
- * <tt>'A'</tt>, and <tt>'T'</tt>) are the same as those for the corresponding
+ * denoted by an upper-case character (i.e. {@code 'B'}, {@code 'H'},
+ * {@code 'S'}, {@code 'C'}, {@code 'X'}, {@code 'E'}, {@code 'G'},
+ * {@code 'A'}, and {@code 'T'}) are the same as those for the corresponding
* lower-case conversion characters except that the result is converted to
* upper case according to the rules of the prevailing {@link java.util.Locale
* Locale}. The result is equivalent to the following invocation of {@link
@@ -284,72 +284,72 @@
* <th valign="bottom"> Argument Category
* <th valign="bottom"> Description
*
- * <tr><td valign="top"> <tt>'b'</tt>, <tt>'B'</tt>
+ * <tr><td valign="top"> {@code 'b'}, {@code 'B'}
* <td valign="top"> general
- * <td> If the argument <i>arg</i> is <tt>null</tt>, then the result is
- * "<tt>false</tt>". If <i>arg</i> is a <tt>boolean</tt> or {@link
+ * <td> If the argument <i>arg</i> is {@code null}, then the result is
+ * "{@code false}". If <i>arg</i> is a {@code boolean} or {@link
* Boolean}, then the result is the string returned by {@link
* String#valueOf(boolean) String.valueOf(arg)}. Otherwise, the result is
* "true".
*
- * <tr><td valign="top"> <tt>'h'</tt>, <tt>'H'</tt>
+ * <tr><td valign="top"> {@code 'h'}, {@code 'H'}
* <td valign="top"> general
- * <td> If the argument <i>arg</i> is <tt>null</tt>, then the result is
- * "<tt>null</tt>". Otherwise, the result is obtained by invoking
- * <tt>Integer.toHexString(arg.hashCode())</tt>.
- *
- * <tr><td valign="top"> <tt>'s'</tt>, <tt>'S'</tt>
+ * <td> If the argument <i>arg</i> is {@code null}, then the result is
+ * "{@code null}". Otherwise, the result is obtained by invoking
+ * {@code Integer.toHexString(arg.hashCode())}.
+ *
+ * <tr><td valign="top"> {@code 's'}, {@code 'S'}
* <td valign="top"> general
- * <td> If the argument <i>arg</i> is <tt>null</tt>, then the result is
- * "<tt>null</tt>". If <i>arg</i> implements {@link Formattable}, then
+ * <td> If the argument <i>arg</i> is {@code null}, then the result is
+ * "{@code null}". If <i>arg</i> implements {@link Formattable}, then
* {@link Formattable#formatTo arg.formatTo} is invoked. Otherwise, the
- * result is obtained by invoking <tt>arg.toString()</tt>.
- *
- * <tr><td valign="top"><tt>'c'</tt>, <tt>'C'</tt>
+ * result is obtained by invoking {@code arg.toString()}.
+ *
+ * <tr><td valign="top">{@code 'c'}, {@code 'C'}
* <td valign="top"> character
* <td> The result is a Unicode character
*
- * <tr><td valign="top"><tt>'d'</tt>
+ * <tr><td valign="top">{@code 'd'}
* <td valign="top"> integral
* <td> The result is formatted as a decimal integer
*
- * <tr><td valign="top"><tt>'o'</tt>
+ * <tr><td valign="top">{@code 'o'}
* <td valign="top"> integral
* <td> The result is formatted as an octal integer
*
- * <tr><td valign="top"><tt>'x'</tt>, <tt>'X'</tt>
+ * <tr><td valign="top">{@code 'x'}, {@code 'X'}
* <td valign="top"> integral
* <td> The result is formatted as a hexadecimal integer
*
- * <tr><td valign="top"><tt>'e'</tt>, <tt>'E'</tt>
+ * <tr><td valign="top">{@code 'e'}, {@code 'E'}
* <td valign="top"> floating point
* <td> The result is formatted as a decimal number in computerized
* scientific notation
*
- * <tr><td valign="top"><tt>'f'</tt>
+ * <tr><td valign="top">{@code 'f'}
* <td valign="top"> floating point
* <td> The result is formatted as a decimal number
*
- * <tr><td valign="top"><tt>'g'</tt>, <tt>'G'</tt>
+ * <tr><td valign="top">{@code 'g'}, {@code 'G'}
* <td valign="top"> floating point
* <td> The result is formatted using computerized scientific notation or
* decimal format, depending on the precision and the value after rounding.
*
- * <tr><td valign="top"><tt>'a'</tt>, <tt>'A'</tt>
+ * <tr><td valign="top">{@code 'a'}, {@code 'A'}
* <td valign="top"> floating point
* <td> The result is formatted as a hexadecimal floating-point number with
* a significand and an exponent
*
- * <tr><td valign="top"><tt>'t'</tt>, <tt>'T'</tt>
+ * <tr><td valign="top">{@code 't'}, {@code 'T'}
* <td valign="top"> date/time
* <td> Prefix for date and time conversion characters. See <a
* href="#dt">Date/Time Conversions</a>.
*
- * <tr><td valign="top"><tt>'%'</tt>
+ * <tr><td valign="top">{@code '%'}
* <td valign="top"> percent
- * <td> The result is a literal <tt>'%'</tt> (<tt>'\u0025'</tt>)
- *
- * <tr><td valign="top"><tt>'n'</tt>
+ * <td> The result is a literal {@code '%'} (<tt>'\u0025'</tt>)
+ *
+ * <tr><td valign="top">{@code 'n'}
* <td valign="top"> line separator
* <td> The result is the platform-specific line separator
*
@@ -361,78 +361,78 @@
* <h4><a name="dt">Date/Time Conversions</a></h4>
*
* <p> The following date and time conversion suffix characters are defined for
- * the <tt>'t'</tt> and <tt>'T'</tt> conversions. The types are similar to but
- * not completely identical to those defined by GNU <tt>date</tt> and POSIX
- * <tt>strftime(3c)</tt>. Additional conversion types are provided to access
- * Java-specific functionality (e.g. <tt>'L'</tt> for milliseconds within the
+ * the {@code 't'} and {@code 'T'} conversions. The types are similar to but
+ * not completely identical to those defined by GNU {@code date} and POSIX
+ * {@code strftime(3c)}. Additional conversion types are provided to access
+ * Java-specific functionality (e.g. {@code 'L'} for milliseconds within the
* second).
*
* <p> The following conversion characters are used for formatting times:
*
* <table cellpadding=5 summary="time">
*
- * <tr><td valign="top"> <tt>'H'</tt>
+ * <tr><td valign="top"> {@code 'H'}
* <td> Hour of the day for the 24-hour clock, formatted as two digits with
- * a leading zero as necessary i.e. <tt>00 - 23</tt>.
- *
- * <tr><td valign="top"><tt>'I'</tt>
+ * a leading zero as necessary i.e. {@code 00 - 23}.
+ *
+ * <tr><td valign="top">{@code 'I'}
* <td> Hour for the 12-hour clock, formatted as two digits with a leading
- * zero as necessary, i.e. <tt>01 - 12</tt>.
- *
- * <tr><td valign="top"><tt>'k'</tt>
- * <td> Hour of the day for the 24-hour clock, i.e. <tt>0 - 23</tt>.
- *
- * <tr><td valign="top"><tt>'l'</tt>
- * <td> Hour for the 12-hour clock, i.e. <tt>1 - 12</tt>.
- *
- * <tr><td valign="top"><tt>'M'</tt>
+ * zero as necessary, i.e. {@code 01 - 12}.
+ *
+ * <tr><td valign="top">{@code 'k'}
+ * <td> Hour of the day for the 24-hour clock, i.e. {@code 0 - 23}.
+ *
+ * <tr><td valign="top">{@code 'l'}
+ * <td> Hour for the 12-hour clock, i.e. {@code 1 - 12}.
+ *
+ * <tr><td valign="top">{@code 'M'}
* <td> Minute within the hour formatted as two digits with a leading zero
- * as necessary, i.e. <tt>00 - 59</tt>.
- *
- * <tr><td valign="top"><tt>'S'</tt>
+ * as necessary, i.e. {@code 00 - 59}.
+ *
+ * <tr><td valign="top">{@code 'S'}
* <td> Seconds within the minute, formatted as two digits with a leading
- * zero as necessary, i.e. <tt>00 - 60</tt> ("<tt>60</tt>" is a special
+ * zero as necessary, i.e. {@code 00 - 60} ("{@code 60}" is a special
* value required to support leap seconds).
*
- * <tr><td valign="top"><tt>'L'</tt>
+ * <tr><td valign="top">{@code 'L'}
* <td> Millisecond within the second formatted as three digits with
- * leading zeros as necessary, i.e. <tt>000 - 999</tt>.
- *
- * <tr><td valign="top"><tt>'N'</tt>
+ * leading zeros as necessary, i.e. {@code 000 - 999}.
+ *
+ * <tr><td valign="top">{@code 'N'}
* <td> Nanosecond within the second, formatted as nine digits with leading
- * zeros as necessary, i.e. <tt>000000000 - 999999999</tt>.
- *
- * <tr><td valign="top"><tt>'p'</tt>
+ * zeros as necessary, i.e. {@code 000000000 - 999999999}.
+ *
+ * <tr><td valign="top">{@code 'p'}
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker
- * in lower case, e.g."<tt>am</tt>" or "<tt>pm</tt>". Use of the conversion
- * prefix <tt>'T'</tt> forces this output to upper case.
- *
- * <tr><td valign="top"><tt>'z'</tt>
+ * in lower case, e.g."{@code am}" or "{@code pm}". Use of the conversion
+ * prefix {@code 'T'} forces this output to upper case.
+ *
+ * <tr><td valign="top">{@code 'z'}
* <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>
- * style numeric time zone offset from GMT, e.g. <tt>-0800</tt>. This
+ * style numeric time zone offset from GMT, e.g. {@code -0800}. This
* value will be adjusted as necessary for Daylight Saving Time. For
- * <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is
- * the {@plainlink TimeZone#getDefault() default time zone} for this
+ * {@code long}, {@link Long}, and {@link Date} the time zone used is
+ * the {@linkplain TimeZone#getDefault() default time zone} for this
* instance of the Java virtual machine.
*
- * <tr><td valign="top"><tt>'Z'</tt>
+ * <tr><td valign="top">{@code 'Z'}
* <td> A string representing the abbreviation for the time zone. This
* value will be adjusted as necessary for Daylight Saving Time. For
- * <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is
- * the {@plainlink TimeZone#getDefault() default time zone} for this
+ * {@code long}, {@link Long}, and {@link Date} the time zone used is
+ * the {@linkplain TimeZone#getDefault() default time zone} for this
* instance of the Java virtual machine. The Formatter's locale will
* supersede the locale of the argument (if any).
*
- * <tr><td valign="top"><tt>'s'</tt>
+ * <tr><td valign="top">{@code 's'}
* <td> Seconds since the beginning of the epoch starting at 1 January 1970
- * <tt>00:00:00</tt> UTC, i.e. <tt>Long.MIN_VALUE/1000</tt> to
- * <tt>Long.MAX_VALUE/1000</tt>.
- *
- * <tr><td valign="top"><tt>'Q'</tt>
+ * {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE/1000} to
+ * {@code Long.MAX_VALUE/1000}.
+ *
+ * <tr><td valign="top">{@code 'Q'}
* <td> Milliseconds since the beginning of the epoch starting at 1 January
- * 1970 <tt>00:00:00</tt> UTC, i.e. <tt>Long.MIN_VALUE</tt> to
- * <tt>Long.MAX_VALUE</tt>.
+ * 1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
+ * {@code Long.MAX_VALUE}.
*
* </table>
*
@@ -440,55 +440,55 @@
*
* <table cellpadding=5 summary="date">
*
- * <tr><td valign="top"><tt>'B'</tt>
+ * <tr><td valign="top">{@code 'B'}
* <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
- * full month name}, e.g. <tt>"January"</tt>, <tt>"February"</tt>.
- *
- * <tr><td valign="top"><tt>'b'</tt>
+ * full month name}, e.g. {@code "January"}, {@code "February"}.
+ *
+ * <tr><td valign="top">{@code 'b'}
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getShortMonths abbreviated month name},
- * e.g. <tt>"Jan"</tt>, <tt>"Feb"</tt>.
- *
- * <tr><td valign="top"><tt>'h'</tt>
- * <td> Same as <tt>'b'</tt>.
- *
- * <tr><td valign="top"><tt>'A'</tt>
+ * e.g. {@code "Jan"}, {@code "Feb"}.
+ *
+ * <tr><td valign="top">{@code 'h'}
+ * <td> Same as {@code 'b'}.
+ *
+ * <tr><td valign="top">{@code 'A'}
* <td> Locale-specific full name of the {@linkplain
* java.text.DateFormatSymbols#getWeekdays day of the week},
- * e.g. <tt>"Sunday"</tt>, <tt>"Monday"</tt>
- *
- * <tr><td valign="top"><tt>'a'</tt>
+ * e.g. {@code "Sunday"}, {@code "Monday"}
+ *
+ * <tr><td valign="top">{@code 'a'}
* <td> Locale-specific short name of the {@linkplain
* java.text.DateFormatSymbols#getShortWeekdays day of the week},
- * e.g. <tt>"Sun"</tt>, <tt>"Mon"</tt>
- *
- * <tr><td valign="top"><tt>'C'</tt>
- * <td> Four-digit year divided by <tt>100</tt>, formatted as two digits
- * with leading zero as necessary, i.e. <tt>00 - 99</tt>
- *
- * <tr><td valign="top"><tt>'Y'</tt>
+ * e.g. {@code "Sun"}, {@code "Mon"}
+ *
+ * <tr><td valign="top">{@code 'C'}
+ * <td> Four-digit year divided by {@code 100}, formatted as two digits
+ * with leading zero as necessary, i.e. {@code 00 - 99}
+ *
+ * <tr><td valign="top">{@code 'Y'}
* <td> Year, formatted as at least four digits with leading zeros as
- * necessary, e.g. <tt>0092</tt> equals <tt>92</tt> CE for the Gregorian
+ * necessary, e.g. {@code 0092} equals {@code 92} CE for the Gregorian
* calendar.
*
- * <tr><td valign="top"><tt>'y'</tt>
+ * <tr><td valign="top">{@code 'y'}
* <td> Last two digits of the year, formatted with leading zeros as
- * necessary, i.e. <tt>00 - 99</tt>.
- *
- * <tr><td valign="top"><tt>'j'</tt>
+ * necessary, i.e. {@code 00 - 99}.
+ *
+ * <tr><td valign="top">{@code 'j'}
* <td> Day of year, formatted as three digits with leading zeros as
- * necessary, e.g. <tt>001 - 366</tt> for the Gregorian calendar.
- *
- * <tr><td valign="top"><tt>'m'</tt>
+ * necessary, e.g. {@code 001 - 366} for the Gregorian calendar.
+ *
+ * <tr><td valign="top">{@code 'm'}
* <td> Month, formatted as two digits with leading zeros as necessary,
- * i.e. <tt>01 - 13</tt>.
- *
- * <tr><td valign="top"><tt>'d'</tt>
+ * i.e. {@code 01 - 13}.
+ *
+ * <tr><td valign="top">{@code 'd'}
* <td> Day of month, formatted as two digits with leading zeros as
- * necessary, i.e. <tt>01 - 31</tt>
- *
- * <tr><td valign="top"><tt>'e'</tt>
- * <td> Day of month, formatted as two digits, i.e. <tt>1 - 31</tt>.
+ * necessary, i.e. {@code 01 - 31}
+ *
+ * <tr><td valign="top">{@code 'e'}
+ * <td> Day of month, formatted as two digits, i.e. {@code 1 - 31}.
*
* </table>
*
@@ -497,27 +497,27 @@
*
* <table cellpadding=5 summary="composites">
*
- * <tr><td valign="top"><tt>'R'</tt>
- * <td> Time formatted for the 24-hour clock as <tt>"%tH:%tM"</tt>
- *
- * <tr><td valign="top"><tt>'T'</tt>
- * <td> Time formatted for the 24-hour clock as <tt>"%tH:%tM:%tS"</tt>.
- *
- * <tr><td valign="top"><tt>'r'</tt>
- * <td> Time formatted for the 12-hour clock as <tt>"%tI:%tM:%tS %Tp"</tt>.
- * The location of the morning or afternoon marker (<tt>'%Tp'</tt>) may be
+ * <tr><td valign="top">{@code 'R'}
+ * <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
+ *
+ * <tr><td valign="top">{@code 'T'}
+ * <td> Time formatted for the 24-hour clock as {@code "%tH:%tM:%tS"}.
+ *
+ * <tr><td valign="top">{@code 'r'}
+ * <td> Time formatted for the 12-hour clock as {@code "%tI:%tM:%tS %Tp"}.
+ * The location of the morning or afternoon marker ({@code '%Tp'}) may be
* locale-dependent.
*
- * <tr><td valign="top"><tt>'D'</tt>
- * <td> Date formatted as <tt>"%tm/%td/%ty"</tt>.
- *
- * <tr><td valign="top"><tt>'F'</tt>
+ * <tr><td valign="top">{@code 'D'}
+ * <td> Date formatted as {@code "%tm/%td/%ty"}.
+ *
+ * <tr><td valign="top">{@code 'F'}
* <td> <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>
- * complete date formatted as <tt>"%tY-%tm-%td"</tt>.
- *
- * <tr><td valign="top"><tt>'c'</tt>
- * <td> Date and time formatted as <tt>"%ta %tb %td %tT %tZ %tY"</tt>,
- * e.g. <tt>"Sun Jul 20 16:17:00 EDT 1969"</tt>.
+ * complete date formatted as {@code "%tY-%tm-%td"}.
+ *
+ * <tr><td valign="top">{@code 'c'}
+ * <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
+ * e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
*
* </table>
*
@@ -591,18 +591,18 @@
*
* <p> <sup>1</sup> Depends on the definition of {@link Formattable}.
*
- * <p> <sup>2</sup> For <tt>'d'</tt> conversion only.
- *
- * <p> <sup>3</sup> For <tt>'o'</tt>, <tt>'x'</tt>, and <tt>'X'</tt>
+ * <p> <sup>2</sup> For {@code 'd'} conversion only.
+ *
+ * <p> <sup>3</sup> For {@code 'o'}, {@code 'x'}, and {@code 'X'}
* conversions only.
*
- * <p> <sup>4</sup> For <tt>'d'</tt>, <tt>'o'</tt>, <tt>'x'</tt>, and
- * <tt>'X'</tt> conversions applied to {@link java.math.BigInteger BigInteger}
- * or <tt>'d'</tt> applied to <tt>byte</tt>, {@link Byte}, <tt>short</tt>, {@link
- * Short}, <tt>int</tt> and {@link Integer}, <tt>long</tt>, and {@link Long}.
- *
- * <p> <sup>5</sup> For <tt>'e'</tt>, <tt>'E'</tt>, <tt>'f'</tt>,
- * <tt>'g'</tt>, and <tt>'G'</tt> conversions only.
+ * <p> <sup>4</sup> For {@code 'd'}, {@code 'o'}, {@code 'x'}, and
+ * {@code 'X'} conversions applied to {@link java.math.BigInteger BigInteger}
+ * or {@code 'd'} applied to {@code byte}, {@link Byte}, {@code short}, {@link
+ * Short}, {@code int} and {@link Integer}, {@code long}, and {@link Long}.
+ *
+ * <p> <sup>5</sup> For {@code 'e'}, {@code 'E'}, {@code 'f'},
+ * {@code 'g'}, and {@code 'G'} conversions only.
*
* <p> Any characters not explicitly defined as flags are illegal and are
* reserved for future extensions.
@@ -618,11 +618,11 @@
* <p> For general argument types, the precision is the maximum number of
* characters to be written to the output.
*
- * <p> For the floating-point conversions <tt>'e'</tt>, <tt>'E'</tt>, and
- * <tt>'f'</tt> the precision is the number of digits after the decimal
- * separator. If the conversion is <tt>'g'</tt> or <tt>'G'</tt>, then the
+ * <p> For the floating-point conversions {@code 'e'}, {@code 'E'}, and
+ * {@code 'f'} the precision is the number of digits after the decimal
+ * separator. If the conversion is {@code 'g'} or {@code 'G'}, then the
* precision is the total number of digits in the resulting magnitude after
- * rounding. If the conversion is <tt>'a'</tt> or <tt>'A'</tt>, then the
+ * rounding. If the conversion is {@code 'a'} or {@code 'A'}, then the
* precision must not be specified.
*
* <p> For character, integral, and date/time argument types and the percent
@@ -633,10 +633,10 @@
*
* <p> The argument index is a decimal integer indicating the position of the
* argument in the argument list. The first argument is referenced by
- * "<tt>1$</tt>", the second by "<tt>2$</tt>", etc.
+ * "{@code 1$}", the second by "{@code 2$}", etc.
*
* <p> Another way to reference arguments by position is to use the
- * <tt>'<'</tt> (<tt>'\u003c'</tt>) flag, which causes the argument for
+ * {@code '<'} (<tt>'\u003c'</tt>) flag, which causes the argument for
* the previous format specifier to be re-used. For example, the following two
* statements would produce identical strings:
*
@@ -670,14 +670,14 @@
* applicable to the corresponding argument, then an {@link
* IllegalFormatConversionException} will be thrown.
*
- * <p> All specified exceptions may be thrown by any of the <tt>format</tt>
- * methods of <tt>Formatter</tt> as well as by any <tt>format</tt> convenience
+ * <p> All specified exceptions may be thrown by any of the {@code format}
+ * methods of {@code Formatter} as well as by any {@code format} convenience
* methods such as {@link String#format(String,Object...) String.format} and
* {@link java.io.PrintStream#printf(String,Object...) PrintStream.printf}.
*
- * <p> Conversions denoted by an upper-case character (i.e. <tt>'B'</tt>,
- * <tt>'H'</tt>, <tt>'S'</tt>, <tt>'C'</tt>, <tt>'X'</tt>, <tt>'E'</tt>,
- * <tt>'G'</tt>, <tt>'A'</tt>, and <tt>'T'</tt>) are the same as those for the
+ * <p> Conversions denoted by an upper-case character (i.e. {@code 'B'},
+ * {@code 'H'}, {@code 'S'}, {@code 'C'}, {@code 'X'}, {@code 'E'},
+ * {@code 'G'}, {@code 'A'}, and {@code 'T'}) are the same as those for the
* corresponding lower-case conversion characters except that the result is
* converted to upper case according to the rules of the prevailing {@link
* java.util.Locale Locale}. The result is equivalent to the following
@@ -692,56 +692,56 @@
*
* <table cellpadding=5 summary="dgConv">
*
- * <tr><td valign="top"> <tt>'b'</tt>
+ * <tr><td valign="top"> {@code 'b'}
* <td valign="top"> <tt>'\u0062'</tt>
- * <td> Produces either "<tt>true</tt>" or "<tt>false</tt>" as returned by
+ * <td> Produces either "{@code true}" or "{@code false}" as returned by
* {@link Boolean#toString(boolean)}.
*
- * <p> If the argument is <tt>null</tt>, then the result is
- * "<tt>false</tt>". If the argument is a <tt>boolean</tt> or {@link
+ * <p> If the argument is {@code null}, then the result is
+ * "{@code false}". If the argument is a {@code boolean} or {@link
* Boolean}, then the result is the string returned by {@link
* String#valueOf(boolean) String.valueOf()}. Otherwise, the result is
- * "<tt>true</tt>".
- *
- * <p> If the <tt>'#'</tt> flag is given, then a {@link
+ * "{@code true}".
+ *
+ * <p> If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'B'</tt>
+ * <tr><td valign="top"> {@code 'B'}
* <td valign="top"> <tt>'\u0042'</tt>
- * <td> The upper-case variant of <tt>'b'</tt>.
- *
- * <tr><td valign="top"> <tt>'h'</tt>
+ * <td> The upper-case variant of {@code 'b'}.
+ *
+ * <tr><td valign="top"> {@code 'h'}
* <td valign="top"> <tt>'\u0068'</tt>
* <td> Produces a string representing the hash code value of the object.
*
- * <p> If the argument, <i>arg</i> is <tt>null</tt>, then the
- * result is "<tt>null</tt>". Otherwise, the result is obtained
- * by invoking <tt>Integer.toHexString(arg.hashCode())</tt>.
- *
- * <p> If the <tt>'#'</tt> flag is given, then a {@link
+ * <p> If the argument, <i>arg</i> is {@code null}, then the
+ * result is "{@code null}". Otherwise, the result is obtained
+ * by invoking {@code Integer.toHexString(arg.hashCode())}.
+ *
+ * <p> If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'H'</tt>
+ * <tr><td valign="top"> {@code 'H'}
* <td valign="top"> <tt>'\u0048'</tt>
- * <td> The upper-case variant of <tt>'h'</tt>.
- *
- * <tr><td valign="top"> <tt>'s'</tt>
+ * <td> The upper-case variant of {@code 'h'}.
+ *
+ * <tr><td valign="top"> {@code 's'}
* <td valign="top"> <tt>'\u0073'</tt>
* <td> Produces a string.
*
- * <p> If the argument is <tt>null</tt>, then the result is
- * "<tt>null</tt>". If the argument implements {@link Formattable}, then
+ * <p> If the argument is {@code null}, then the result is
+ * "{@code null}". If the argument implements {@link Formattable}, then
* its {@link Formattable#formatTo formatTo} method is invoked.
* Otherwise, the result is obtained by invoking the argument's
- * <tt>toString()</tt> method.
- *
- * <p> If the <tt>'#'</tt> flag is given and the argument is not a {@link
+ * {@code toString()} method.
+ *
+ * <p> If the {@code '#'} flag is given and the argument is not a {@link
* Formattable} , then a {@link FormatFlagsConversionMismatchException}
* will be thrown.
*
- * <tr><td valign="top"> <tt>'S'</tt>
+ * <tr><td valign="top"> {@code 'S'}
* <td valign="top"> <tt>'\u0053'</tt>
- * <td> The upper-case variant of <tt>'s'</tt>.
+ * <td> The upper-case variant of {@code 's'}.
*
* </table>
*
@@ -749,7 +749,7 @@
*
* <table cellpadding=5 summary="dFlags">
*
- * <tr><td valign="top"> <tt>'-'</tt>
+ * <tr><td valign="top"> {@code '-'}
* <td valign="top"> <tt>'\u002d'</tt>
* <td> Left justifies the output. Spaces (<tt>'\u0020'</tt>) will be
* added at the end of the converted value as required to fill the minimum
@@ -757,7 +757,7 @@
* MissingFormatWidthException} will be thrown. If this flag is not given
* then the output will be right-justified.
*
- * <tr><td valign="top"> <tt>'#'</tt>
+ * <tr><td valign="top"> {@code '#'}
* <td valign="top"> <tt>'\u0023'</tt>
* <td> Requires the output use an alternate form. The definition of the
* form is specified by the conversion.
@@ -767,47 +767,47 @@
* <p> The <a name="genWidth">width</a> is the minimum number of characters to
* be written to the
* output. If the length of the converted value is less than the width then
- * the output will be padded by <tt>' '</tt> (<tt>\u0020'</tt>)
+ * the output will be padded by <tt>' '</tt> (<tt>'\u0020'</tt>)
* until the total number of characters equals the width. The padding is on
- * the left by default. If the <tt>'-'</tt> flag is given, then the padding
+ * the left by default. If the {@code '-'} flag is given, then the padding
* will be on the right. If the width is not specified then there is no
* minimum.
*
* <p> The precision is the maximum number of characters to be written to the
* output. The precision is applied before the width, thus the output will be
- * truncated to <tt>precision</tt> characters even if the width is greater than
+ * truncated to {@code precision} characters even if the width is greater than
* the precision. If the precision is not specified then there is no explicit
* limit on the number of characters.
*
* <h4><a name="dchar">Character</a></h4>
*
- * This conversion may be applied to <tt>char</tt> and {@link Character}. It
- * may also be applied to the types <tt>byte</tt>, {@link Byte},
- * <tt>short</tt>, and {@link Short}, <tt>int</tt> and {@link Integer} when
- * {@link Character#isValidCodePoint} returns <tt>true</tt>. If it returns
- * <tt>false</tt> then an {@link IllegalFormatCodePointException} will be
+ * This conversion may be applied to {@code char} and {@link Character}. It
+ * may also be applied to the types {@code byte}, {@link Byte},
+ * {@code short}, and {@link Short}, {@code int} and {@link Integer} when
+ * {@link Character#isValidCodePoint} returns {@code true}. If it returns
+ * {@code false} then an {@link IllegalFormatCodePointException} will be
* thrown.
*
* <table cellpadding=5 summary="charConv">
*
- * <tr><td valign="top"> <tt>'c'</tt>
+ * <tr><td valign="top"> {@code 'c'}
* <td valign="top"> <tt>'\u0063'</tt>
* <td> Formats the argument as a Unicode character as described in <a
* href="../lang/Character.html#unicode">Unicode Character
- * Representation</a>. This may be more than one 16-bit <tt>char</tt> in
+ * Representation</a>. This may be more than one 16-bit {@code char} in
* the case where the argument represents a supplementary character.
*
- * <p> If the <tt>'#'</tt> flag is given, then a {@link
+ * <p> If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'C'</tt>
+ * <tr><td valign="top"> {@code 'C'}
* <td valign="top"> <tt>'\u0043'</tt>
- * <td> The upper-case variant of <tt>'c'</tt>.
+ * <td> The upper-case variant of {@code 'c'}.
*
* </table>
*
- * <p> The <tt>'-'</tt> flag defined for <a href="#dFlags">General
- * conversions</a> applies. If the <tt>'#'</tt> flag is given, then a {@link
+ * <p> The {@code '-'} flag defined for <a href="#dFlags">General
+ * conversions</a> applies. If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
* <p> The width is defined as for <a href="#genWidth">General conversions</a>.
@@ -844,14 +844,14 @@
* <li> Each digit character <i>d</i> in the string is replaced by a
* locale-specific digit computed relative to the current locale's
* {@linkplain java.text.DecimalFormatSymbols#getZeroDigit() zero digit}
- * <i>z</i>; that is <i>d - </i> <tt>'0'</tt>
+ * <i>z</i>; that is <i>d - </i> {@code '0'}
* <i> + z</i>.
*
* <li> If a decimal separator is present, a locale-specific {@linkplain
* java.text.DecimalFormatSymbols#getDecimalSeparator decimal separator} is
* substituted.
*
- * <li> If the <tt>','</tt> (<tt>'\u002c'</tt>)
+ * <li> If the {@code ','} (<tt>'\u002c'</tt>)
* <a name="l10n group">flag</a> is given, then the locale-specific {@linkplain
* java.text.DecimalFormatSymbols#getGroupingSeparator grouping separator} is
* inserted by scanning the integer part of the string from least significant
@@ -859,111 +859,111 @@
* the locale's {@linkplain java.text.DecimalFormat#getGroupingSize() grouping
* size}.
*
- * <li> If the <tt>'0'</tt> flag is given, then the locale-specific {@linkplain
+ * <li> If the {@code '0'} flag is given, then the locale-specific {@linkplain
* java.text.DecimalFormatSymbols#getZeroDigit() zero digits} are inserted
* after the sign character, if any, and before the first non-zero digit, until
* the length of the string is equal to the requested field width.
*
- * <li> If the value is negative and the <tt>'('</tt> flag is given, then a
- * <tt>'('</tt> (<tt>'\u0028'</tt>) is prepended and a <tt>')'</tt>
+ * <li> If the value is negative and the {@code '('} flag is given, then a
+ * {@code '('} (<tt>'\u0028'</tt>) is prepended and a {@code ')'}
* (<tt>'\u0029'</tt>) is appended.
*
* <li> If the value is negative (or floating-point negative zero) and
- * <tt>'('</tt> flag is not given, then a <tt>'-'</tt> (<tt>'\u002d'</tt>)
+ * {@code '('} flag is not given, then a {@code '-'} (<tt>'\u002d'</tt>)
* is prepended.
*
- * <li> If the <tt>'+'</tt> flag is given and the value is positive or zero (or
- * floating-point positive zero), then a <tt>'+'</tt> (<tt>'\u002b'</tt>)
+ * <li> If the {@code '+'} flag is given and the value is positive or zero (or
+ * floating-point positive zero), then a {@code '+'} (<tt>'\u002b'</tt>)
* will be prepended.
*
* </ol>
*
* <p> If the value is NaN or positive infinity the literal strings "NaN" or
* "Infinity" respectively, will be output. If the value is negative infinity,
- * then the output will be "(Infinity)" if the <tt>'('</tt> flag is given
+ * then the output will be "(Infinity)" if the {@code '('} flag is given
* otherwise the output will be "-Infinity". These values are not localized.
*
* <p><a name="dnint"><b> Byte, Short, Integer, and Long </b></a>
*
- * <p> The following conversions may be applied to <tt>byte</tt>, {@link Byte},
- * <tt>short</tt>, {@link Short}, <tt>int</tt> and {@link Integer},
- * <tt>long</tt>, and {@link Long}.
+ * <p> The following conversions may be applied to {@code byte}, {@link Byte},
+ * {@code short}, {@link Short}, {@code int} and {@link Integer},
+ * {@code long}, and {@link Long}.
*
* <table cellpadding=5 summary="IntConv">
*
- * <tr><td valign="top"> <tt>'d'</tt>
+ * <tr><td valign="top"> {@code 'd'}
* <td valign="top"> <tt>'\u0054'</tt>
* <td> Formats the argument as a decimal integer. The <a
* href="#l10n algorithm">localization algorithm</a> is applied.
*
- * <p> If the <tt>'0'</tt> flag is given and the value is negative, then
+ * <p> If the {@code '0'} flag is given and the value is negative, then
* the zero padding will occur after the sign.
*
- * <p> If the <tt>'#'</tt> flag is given then a {@link
+ * <p> If the {@code '#'} flag is given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'o'</tt>
+ * <tr><td valign="top"> {@code 'o'}
* <td valign="top"> <tt>'\u006f'</tt>
* <td> Formats the argument as an integer in base eight. No localization
* is applied.
*
* <p> If <i>x</i> is negative then the result will be an unsigned value
- * generated by adding 2<sup>n</sup> to the value where <tt>n</tt> is the
- * number of bits in the type as returned by the static <tt>SIZE</tt> field
+ * generated by adding 2<sup>n</sup> to the value where {@code n} is the
+ * number of bits in the type as returned by the static {@code SIZE} field
* in the {@linkplain Byte#SIZE Byte}, {@linkplain Short#SIZE Short},
* {@linkplain Integer#SIZE Integer}, or {@linkplain Long#SIZE Long}
* classes as appropriate.
*
- * <p> If the <tt>'#'</tt> flag is given then the output will always begin
- * with the radix indicator <tt>'0'</tt>.
- *
- * <p> If the <tt>'0'</tt> flag is given then the output will be padded
+ * <p> If the {@code '#'} flag is given then the output will always begin
+ * with the radix indicator {@code '0'}.
+ *
+ * <p> If the {@code '0'} flag is given then the output will be padded
* with leading zeros to the field width following any indication of sign.
*
- * <p> If <tt>'('</tt>, <tt>'+'</tt>, '  ', or <tt>','</tt> flags
+ * <p> If {@code '('}, {@code '+'}, '  ', or {@code ','} flags
* are given then a {@link FormatFlagsConversionMismatchException} will be
* thrown.
*
- * <tr><td valign="top"> <tt>'x'</tt>
+ * <tr><td valign="top"> {@code 'x'}
* <td valign="top"> <tt>'\u0078'</tt>
* <td> Formats the argument as an integer in base sixteen. No
* localization is applied.
*
* <p> If <i>x</i> is negative then the result will be an unsigned value
- * generated by adding 2<sup>n</sup> to the value where <tt>n</tt> is the
- * number of bits in the type as returned by the static <tt>SIZE</tt> field
+ * generated by adding 2<sup>n</sup> to the value where {@code n} is the
+ * number of bits in the type as returned by the static {@code SIZE} field
* in the {@linkplain Byte#SIZE Byte}, {@linkplain Short#SIZE Short},
* {@linkplain Integer#SIZE Integer}, or {@linkplain Long#SIZE Long}
* classes as appropriate.
*
- * <p> If the <tt>'#'</tt> flag is given then the output will always begin
- * with the radix indicator <tt>"0x"</tt>.
- *
- * <p> If the <tt>'0'</tt> flag is given then the output will be padded to
+ * <p> If the {@code '#'} flag is given then the output will always begin
+ * with the radix indicator {@code "0x"}.
+ *
+ * <p> If the {@code '0'} flag is given then the output will be padded to
* the field width with leading zeros after the radix indicator or sign (if
* present).
*
- * <p> If <tt>'('</tt>, <tt>' '</tt>, <tt>'+'</tt>, or
- * <tt>','</tt> flags are given then a {@link
+ * <p> If {@code '('}, <tt>' '</tt>, {@code '+'}, or
+ * {@code ','} flags are given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'X'</tt>
+ * <tr><td valign="top"> {@code 'X'}
* <td valign="top"> <tt>'\u0058'</tt>
- * <td> The upper-case variant of <tt>'x'</tt>. The entire string
+ * <td> The upper-case variant of {@code 'x'}. The entire string
* representing the number will be converted to {@linkplain
- * String#toUpperCase upper case} including the <tt>'x'</tt> (if any) and
- * all hexadecimal digits <tt>'a'</tt> - <tt>'f'</tt>
+ * String#toUpperCase upper case} including the {@code 'x'} (if any) and
+ * all hexadecimal digits {@code 'a'} - {@code 'f'}
* (<tt>'\u0061'</tt> - <tt>'\u0066'</tt>).
*
* </table>
*
- * <p> If the conversion is <tt>'o'</tt>, <tt>'x'</tt>, or <tt>'X'</tt> and
- * both the <tt>'#'</tt> and the <tt>'0'</tt> flags are given, then result will
- * contain the radix indicator (<tt>'0'</tt> for octal and <tt>"0x"</tt> or
- * <tt>"0X"</tt> for hexadecimal), some number of zeros (based on the width),
+ * <p> If the conversion is {@code 'o'}, {@code 'x'}, or {@code 'X'} and
+ * both the {@code '#'} and the {@code '0'} flags are given, then result will
+ * contain the radix indicator ({@code '0'} for octal and {@code "0x"} or
+ * {@code "0X"} for hexadecimal), some number of zeros (based on the width),
* and the value.
*
- * <p> If the <tt>'-'</tt> flag is not given, then the space padding will occur
+ * <p> If the {@code '-'} flag is not given, then the space padding will occur
* before the sign.
*
* <p> The following <a name="intFlags">flags</a> apply to numeric integral
@@ -971,13 +971,13 @@
*
* <table cellpadding=5 summary="intFlags">
*
- * <tr><td valign="top"> <tt>'+'</tt>
+ * <tr><td valign="top"> {@code '+'}
* <td valign="top"> <tt>'\u002b'</tt>
* <td> Requires the output to include a positive sign for all positive
* numbers. If this flag is not given then only negative values will
* include a sign.
*
- * <p> If both the <tt>'+'</tt> and <tt>' '</tt> flags are given
+ * <p> If both the {@code '+'} and <tt>' '</tt> flags are given
* then an {@link IllegalFormatFlagsException} will be thrown.
*
* <tr><td valign="top"> <tt>' '</tt>
@@ -985,10 +985,10 @@
* <td> Requires the output to include a single extra space
* (<tt>'\u0020'</tt>) for non-negative values.
*
- * <p> If both the <tt>'+'</tt> and <tt>' '</tt> flags are given
+ * <p> If both the {@code '+'} and <tt>' '</tt> flags are given
* then an {@link IllegalFormatFlagsException} will be thrown.
*
- * <tr><td valign="top"> <tt>'0'</tt>
+ * <tr><td valign="top"> {@code '0'}
* <td valign="top"> <tt>'\u0030'</tt>
* <td> Requires the output to be padded with leading {@linkplain
* java.text.DecimalFormatSymbols#getZeroDigit zeros} to the minimum field
@@ -996,20 +996,20 @@
* or infinity. If the width is not provided, then a {@link
* MissingFormatWidthException} will be thrown.
*
- * <p> If both the <tt>'-'</tt> and <tt>'0'</tt> flags are given then an
+ * <p> If both the {@code '-'} and {@code '0'} flags are given then an
* {@link IllegalFormatFlagsException} will be thrown.
*
- * <tr><td valign="top"> <tt>','</tt>
+ * <tr><td valign="top"> {@code ','}
* <td valign="top"> <tt>'\u002c'</tt>
* <td> Requires the output to include the locale-specific {@linkplain
* java.text.DecimalFormatSymbols#getGroupingSeparator group separators} as
* described in the <a href="#l10n group">"group" section</a> of the
* localization algorithm.
*
- * <tr><td valign="top"> <tt>'('</tt>
+ * <tr><td valign="top"> {@code '('}
* <td valign="top"> <tt>'\u0028'</tt>
- * <td> Requires the output to prepend a <tt>'('</tt>
- * (<tt>'\u0028'</tt>) and append a <tt>')'</tt>
+ * <td> Requires the output to prepend a {@code '('}
+ * (<tt>'\u0028'</tt>) and append a {@code ')'}
* (<tt>'\u0029'</tt>) to negative values.
*
* </table>
@@ -1019,9 +1019,9 @@
*
* <ul>
*
- * <li> The output is right-justified within the <tt>width</tt>
- *
- * <li> Negative numbers begin with a <tt>'-'</tt> (<tt>'\u002d'</tt>)
+ * <li> The output is right-justified within the {@code width}
+ *
+ * <li> Negative numbers begin with a {@code '-'} (<tt>'\u002d'</tt>)
*
* <li> Positive numbers and zero do not include a sign or extra leading
* space
@@ -1035,7 +1035,7 @@
* separators, radix indicator, and parentheses. If the length of the
* converted value is less than the width then the output will be padded by
* spaces (<tt>'\u0020'</tt>) until the total number of characters equals
- * width. The padding is on the left by default. If <tt>'-'</tt> flag is
+ * width. The padding is on the left by default. If {@code '-'} flag is
* given then the padding will be on the right. If width is not specified then
* there is no minimum.
*
@@ -1049,81 +1049,81 @@
*
* <table cellpadding=5 summary="BIntConv">
*
- * <tr><td valign="top"> <tt>'d'</tt>
+ * <tr><td valign="top"> {@code 'd'}
* <td valign="top"> <tt>'\u0054'</tt>
* <td> Requires the output to be formatted as a decimal integer. The <a
* href="#l10n algorithm">localization algorithm</a> is applied.
*
- * <p> If the <tt>'#'</tt> flag is given {@link
+ * <p> If the {@code '#'} flag is given {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'o'</tt>
+ * <tr><td valign="top"> {@code 'o'}
* <td valign="top"> <tt>'\u006f'</tt>
* <td> Requires the output to be formatted as an integer in base eight.
* No localization is applied.
*
* <p> If <i>x</i> is negative then the result will be a signed value
- * beginning with <tt>'-'</tt> (<tt>'\u002d'</tt>). Signed output is
+ * beginning with {@code '-'} (<tt>'\u002d'</tt>). Signed output is
* allowed for this type because unlike the primitive types it is not
* possible to create an unsigned equivalent without assuming an explicit
* data-type size.
*
- * <p> If <i>x</i> is positive or zero and the <tt>'+'</tt> flag is given
- * then the result will begin with <tt>'+'</tt> (<tt>'\u002b'</tt>).
- *
- * <p> If the <tt>'#'</tt> flag is given then the output will always begin
- * with <tt>'0'</tt> prefix.
- *
- * <p> If the <tt>'0'</tt> flag is given then the output will be padded
+ * <p> If <i>x</i> is positive or zero and the {@code '+'} flag is given
+ * then the result will begin with {@code '+'} (<tt>'\u002b'</tt>).
+ *
+ * <p> If the {@code '#'} flag is given then the output will always begin
+ * with {@code '0'} prefix.
+ *
+ * <p> If the {@code '0'} flag is given then the output will be padded
* with leading zeros to the field width following any indication of sign.
*
- * <p> If the <tt>','</tt> flag is given then a {@link
+ * <p> If the {@code ','} flag is given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'x'</tt>
+ * <tr><td valign="top"> {@code 'x'}
* <td valign="top"> <tt>'\u0078'</tt>
* <td> Requires the output to be formatted as an integer in base
* sixteen. No localization is applied.
*
* <p> If <i>x</i> is negative then the result will be a signed value
- * beginning with <tt>'-'</tt> (<tt>'\u002d'</tt>). Signed output is
+ * beginning with {@code '-'} (<tt>'\u002d'</tt>). Signed output is
* allowed for this type because unlike the primitive types it is not
* possible to create an unsigned equivalent without assuming an explicit
* data-type size.
*
- * <p> If <i>x</i> is positive or zero and the <tt>'+'</tt> flag is given
- * then the result will begin with <tt>'+'</tt> (<tt>'\u002b'</tt>).
- *
- * <p> If the <tt>'#'</tt> flag is given then the output will always begin
- * with the radix indicator <tt>"0x"</tt>.
- *
- * <p> If the <tt>'0'</tt> flag is given then the output will be padded to
+ * <p> If <i>x</i> is positive or zero and the {@code '+'} flag is given
+ * then the result will begin with {@code '+'} (<tt>'\u002b'</tt>).
+ *
+ * <p> If the {@code '#'} flag is given then the output will always begin
+ * with the radix indicator {@code "0x"}.
+ *
+ * <p> If the {@code '0'} flag is given then the output will be padded to
* the field width with leading zeros after the radix indicator or sign (if
* present).
*
- * <p> If the <tt>','</tt> flag is given then a {@link
+ * <p> If the {@code ','} flag is given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'X'</tt>
+ * <tr><td valign="top"> {@code 'X'}
* <td valign="top"> <tt>'\u0058'</tt>
- * <td> The upper-case variant of <tt>'x'</tt>. The entire string
+ * <td> The upper-case variant of {@code 'x'}. The entire string
* representing the number will be converted to {@linkplain
- * String#toUpperCase upper case} including the <tt>'x'</tt> (if any) and
- * all hexadecimal digits <tt>'a'</tt> - <tt>'f'</tt>
+ * String#toUpperCase upper case} including the {@code 'x'} (if any) and
+ * all hexadecimal digits {@code 'a'} - {@code 'f'}
* (<tt>'\u0061'</tt> - <tt>'\u0066'</tt>).
*
* </table>
*
- * <p> If the conversion is <tt>'o'</tt>, <tt>'x'</tt>, or <tt>'X'</tt> and
- * both the <tt>'#'</tt> and the <tt>'0'</tt> flags are given, then result will
- * contain the base indicator (<tt>'0'</tt> for octal and <tt>"0x"</tt> or
- * <tt>"0X"</tt> for hexadecimal), some number of zeros (based on the width),
+ * <p> If the conversion is {@code 'o'}, {@code 'x'}, or {@code 'X'} and
+ * both the {@code '#'} and the {@code '0'} flags are given, then result will
+ * contain the base indicator ({@code '0'} for octal and {@code "0x"} or
+ * {@code "0X"} for hexadecimal), some number of zeros (based on the width),
* and the value.
*
- * <p> If the <tt>'0'</tt> flag is given and the value is negative, then the
+ * <p> If the {@code '0'} flag is given and the value is negative, then the
* zero padding will occur after the sign.
*
- * <p> If the <tt>'-'</tt> flag is not given, then the space padding will occur
+ * <p> If the {@code '-'} flag is not given, then the space padding will occur
* before the sign.
*
* <p> All <a href="#intFlags">flags</a> defined for Byte, Short, Integer, and
@@ -1138,12 +1138,12 @@
*
* <p><a name="dndec"><b> Float and Double</b></a>
*
- * <p> The following conversions may be applied to <tt>float</tt>, {@link
- * Float}, <tt>double</tt> and {@link Double}.
+ * <p> The following conversions may be applied to {@code float}, {@link
+ * Float}, {@code double} and {@link Double}.
*
* <table cellpadding=5 summary="floatConv">
*
- * <tr><td valign="top"> <tt>'e'</tt>
+ * <tr><td valign="top"> {@code 'e'}
* <td valign="top"> <tt>'\u0065'</tt>
* <td> Requires the output to be formatted using <a
* name="scientific">computerized scientific notation</a>. The <a
@@ -1156,7 +1156,7 @@
* localized.
*
* <p> If <i>m</i> is positive-zero or negative-zero, then the exponent
- * will be <tt>"+00"</tt>.
+ * will be {@code "+00"}.
*
* <p> Otherwise, the result is a string that represents the sign and
* magnitude (absolute value) of the argument. The formatting of the sign
@@ -1170,7 +1170,7 @@
* that 1 <= <i>a</i> < 10. The magnitude is then represented as the
* integer part of <i>a</i>, as a single decimal digit, followed by the
* decimal separator followed by decimal digits representing the fractional
- * part of <i>a</i>, followed by the exponent symbol <tt>'e'</tt>
+ * part of <i>a</i>, followed by the exponent symbol {@code 'e'}
* (<tt>'\u0065'</tt>), followed by the sign of the exponent, followed
* by a representation of <i>n</i> as a decimal integer, as produced by the
* method {@link Long#toString(long, int)}, and zero-padded to include at
@@ -1178,7 +1178,7 @@
*
* <p> The number of digits in the result for the fractional part of
* <i>m</i> or <i>a</i> is equal to the precision. If the precision is not
- * specified then the default value is <tt>6</tt>. If the precision is less
+ * specified then the default value is {@code 6}. If the precision is less
* than the number of digits which would appear after the decimal point in
* the string returned by {@link Float#toString(float)} or {@link
* Double#toString(double)} respectively, then the value will be rounded
@@ -1188,15 +1188,15 @@
* Float#toString(float)} or {@link Double#toString(double)} as
* appropriate.
*
- * <p>If the <tt>','</tt> flag is given, then an {@link
+ * <p>If the {@code ','} flag is given, then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'E'</tt>
+ * <tr><td valign="top"> {@code 'E'}
* <td valign="top"> <tt>'\u0045'</tt>
- * <td> The upper-case variant of <tt>'e'</tt>. The exponent symbol
- * will be <tt>'E'</tt> (<tt>'\u0045'</tt>).
- *
- * <tr><td valign="top"> <tt>'g'</tt>
+ * <td> The upper-case variant of {@code 'e'}. The exponent symbol
+ * will be {@code 'E'} (<tt>'\u0045'</tt>).
+ *
+ * <tr><td valign="top"> {@code 'g'}
* <td valign="top"> <tt>'\u0067'</tt>
* <td> Requires the output to be formatted in general scientific notation
* as described below. The <a href="#l10n algorithm">localization
@@ -1215,17 +1215,17 @@
*
* <p> The total number of significant digits in <i>m</i> is equal to the
* precision. If the precision is not specified, then the default value is
- * <tt>6</tt>. If the precision is <tt>0</tt>, then it is taken to be
- * <tt>1</tt>.
- *
- * <p> If the <tt>'#'</tt> flag is given then an {@link
+ * {@code 6}. If the precision is {@code 0}, then it is taken to be
+ * {@code 1}.
+ *
+ * <p> If the {@code '#'} flag is given then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'G'</tt>
+ * <tr><td valign="top"> {@code 'G'}
* <td valign="top"> <tt>'\u0047'</tt>
- * <td> The upper-case variant of <tt>'g'</tt>.
- *
- * <tr><td valign="top"> <tt>'f'</tt>
+ * <td> The upper-case variant of {@code 'g'}.
+ *
+ * <tr><td valign="top"> {@code 'f'}
* <td valign="top"> <tt>'\u0066'</tt>
* <td> Requires the output to be formatted using <a name="decimal">decimal
* format</a>. The <a href="#l10n algorithm">localization algorithm</a> is
@@ -1247,7 +1247,7 @@
*
* <p> The number of digits in the result for the fractional part of
* <i>m</i> or <i>a</i> is equal to the precision. If the precision is not
- * specified then the default value is <tt>6</tt>. If the precision is less
+ * specified then the default value is {@code 6}. If the precision is less
* than the number of digits which would appear after the decimal point in
* the string returned by {@link Float#toString(float)} or {@link
* Double#toString(double)} respectively, then the value will be rounded
@@ -1257,7 +1257,7 @@
* Float#toString(float)} or {@link Double#toString(double)} as
* appropriate.
*
- * <tr><td valign="top"> <tt>'a'</tt>
+ * <tr><td valign="top"> {@code 'a'}
* <td valign="top"> <tt>'\u0061'</tt>
* <td> Requires the output to be formatted in hexadecimal exponential
* form. No localization is applied.
@@ -1266,10 +1266,10 @@
* (absolute value) of the argument <i>x</i>.
*
* <p> If <i>x</i> is negative or a negative-zero value then the result
- * will begin with <tt>'-'</tt> (<tt>'\u002d'</tt>).
+ * will begin with {@code '-'} (<tt>'\u002d'</tt>).
*
* <p> If <i>x</i> is positive or a positive-zero value and the
- * <tt>'+'</tt> flag is given then the result will begin with <tt>'+'</tt>
+ * {@code '+'} flag is given then the result will begin with {@code '+'}
* (<tt>'\u002b'</tt>).
*
* <p> The formatting of the magnitude <i>m</i> depends upon its value.
@@ -1280,43 +1280,43 @@
* "Infinity", respectively, will be output.
*
* <li> If <i>m</i> is zero then it is represented by the string
- * <tt>"0x0.0p0"</tt>.
- *
- * <li> If <i>m</i> is a <tt>double</tt> value with a normalized
+ * {@code "0x0.0p0"}.
+ *
+ * <li> If <i>m</i> is a {@code double} value with a normalized
* representation then substrings are used to represent the significand and
* exponent fields. The significand is represented by the characters
- * <tt>"0x1."</tt> followed by the hexadecimal representation of the rest
+ * {@code "0x1."} followed by the hexadecimal representation of the rest
* of the significand as a fraction. The exponent is represented by
- * <tt>'p'</tt> (<tt>'\u0070'</tt>) followed by a decimal string of the
+ * {@code 'p'} (<tt>'\u0070'</tt>) followed by a decimal string of the
* unbiased exponent as if produced by invoking {@link
* Integer#toString(int) Integer.toString} on the exponent value.
*
- * <li> If <i>m</i> is a <tt>double</tt> value with a subnormal
+ * <li> If <i>m</i> is a {@code double} value with a subnormal
* representation then the significand is represented by the characters
- * <tt>'0x0.'</tt> followed by the hexadecimal representation of the rest
+ * {@code '0x0.'} followed by the hexadecimal representation of the rest
* of the significand as a fraction. The exponent is represented by
- * <tt>'p-1022'</tt>. Note that there must be at least one nonzero digit
+ * {@code 'p-1022'}. Note that there must be at least one nonzero digit
* in a subnormal significand.
*
* </ul>
*
- * <p> If the <tt>'('</tt> or <tt>','</tt> flags are given, then a {@link
+ * <p> If the {@code '('} or {@code ','} flags are given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'A'</tt>
+ * <tr><td valign="top"> {@code 'A'}
* <td valign="top"> <tt>'\u0041'</tt>
- * <td> The upper-case variant of <tt>'a'</tt>. The entire string
+ * <td> The upper-case variant of {@code 'a'}. The entire string
* representing the number will be converted to upper case including the
- * <tt>'x'</tt> (<tt>'\u0078'</tt>) and <tt>'p'</tt>
- * (<tt>'\u0070'</tt> and all hexadecimal digits <tt>'a'</tt> -
- * <tt>'f'</tt> (<tt>'\u0061'</tt> - <tt>'\u0066'</tt>).
+ * {@code 'x'} (<tt>'\u0078'</tt>) and {@code 'p'}
+ * (<tt>'\u0070'</tt> and all hexadecimal digits {@code 'a'} -
+ * {@code 'f'} (<tt>'\u0061'</tt> - <tt>'\u0066'</tt>).
*
* </table>
*
* <p> All <a href="#intFlags">flags</a> defined for Byte, Short, Integer, and
* Long apply.
*
- * <p> If the <tt>'#'</tt> flag is given, then the decimal separator will
+ * <p> If the {@code '#'} flag is given, then the decimal separator will
* always be present.
*
* <p> If no <a name="floatdFlags">flags</a> are given the default formatting
@@ -1324,9 +1324,9 @@
*
* <ul>
*
- * <li> The output is right-justified within the <tt>width</tt>
- *
- * <li> Negative numbers begin with a <tt>'-'</tt>
+ * <li> The output is right-justified within the {@code width}
+ *
+ * <li> Negative numbers begin with a {@code '-'}
*
* <li> Positive numbers and positive zero do not include a sign or extra
* leading space
@@ -1344,21 +1344,21 @@
* the length of the converted value is less than the width then the output
* will be padded by spaces (<tt>'\u0020'</tt>) until the total number of
* characters equals width. The padding is on the left by default. If the
- * <tt>'-'</tt> flag is given then the padding will be on the right. If width
+ * {@code '-'} flag is given then the padding will be on the right. If width
* is not specified then there is no minimum.
*
- * <p> If the <a name="floatDPrec">conversion</a> is <tt>'e'</tt>,
- * <tt>'E'</tt> or <tt>'f'</tt>, then the precision is the number of digits
+ * <p> If the <a name="floatDPrec">conversion</a> is {@code 'e'},
+ * {@code 'E'} or {@code 'f'}, then the precision is the number of digits
* after the decimal separator. If the precision is not specified, then it is
- * assumed to be <tt>6</tt>.
- *
- * <p> If the conversion is <tt>'g'</tt> or <tt>'G'</tt>, then the precision is
+ * assumed to be {@code 6}.
+ *
+ * <p> If the conversion is {@code 'g'} or {@code 'G'}, then the precision is
* the total number of significant digits in the resulting magnitude after
* rounding. If the precision is not specified, then the default value is
- * <tt>6</tt>. If the precision is <tt>0</tt>, then it is taken to be
- * <tt>1</tt>.
- *
- * <p> If the conversion is <tt>'a'</tt> or <tt>'A'</tt>, then the precision
+ * {@code 6}. If the precision is {@code 0}, then it is taken to be
+ * {@code 1}.
+ *
+ * <p> If the conversion is {@code 'a'} or {@code 'A'}, then the precision
* is the number of hexadecimal digits after the decimal separator. If the
* precision is not provided, then all of the digits as returned by {@link
* Double#toHexString(double)} will be output.
@@ -1370,7 +1370,7 @@
*
* <table cellpadding=5 summary="floatConv">
*
- * <tr><td valign="top"> <tt>'e'</tt>
+ * <tr><td valign="top"> {@code 'e'}
* <td valign="top"> <tt>'\u0065'</tt>
* <td> Requires the output to be formatted using <a
* name="scientific">computerized scientific notation</a>. The <a
@@ -1379,7 +1379,7 @@
* <p> The formatting of the magnitude <i>m</i> depends upon its value.
*
* <p> If <i>m</i> is positive-zero or negative-zero, then the exponent
- * will be <tt>"+00"</tt>.
+ * will be {@code "+00"}.
*
* <p> Otherwise, the result is a string that represents the sign and
* magnitude (absolute value) of the argument. The formatting of the sign
@@ -1393,7 +1393,7 @@
* that 1 <= <i>a</i> < 10. The magnitude is then represented as the
* integer part of <i>a</i>, as a single decimal digit, followed by the
* decimal separator followed by decimal digits representing the fractional
- * part of <i>a</i>, followed by the exponent symbol <tt>'e'</tt>
+ * part of <i>a</i>, followed by the exponent symbol {@code 'e'}
* (<tt>'\u0065'</tt>), followed by the sign of the exponent, followed
* by a representation of <i>n</i> as a decimal integer, as produced by the
* method {@link Long#toString(long, int)}, and zero-padded to include at
@@ -1401,7 +1401,7 @@
*
* <p> The number of digits in the result for the fractional part of
* <i>m</i> or <i>a</i> is equal to the precision. If the precision is not
- * specified then the default value is <tt>6</tt>. If the precision is
+ * specified then the default value is {@code 6}. If the precision is
* less than the number of digits which would appear after the decimal
* point in the string returned by {@link Float#toString(float)} or {@link
* Double#toString(double)} respectively, then the value will be rounded
@@ -1410,15 +1410,15 @@
* For a canonical representation of the value, use {@link
* BigDecimal#toString()}.
*
- * <p> If the <tt>','</tt> flag is given, then an {@link
+ * <p> If the {@code ','} flag is given, then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'E'</tt>
+ * <tr><td valign="top"> {@code 'E'}
* <td valign="top"> <tt>'\u0045'</tt>
- * <td> The upper-case variant of <tt>'e'</tt>. The exponent symbol
- * will be <tt>'E'</tt> (<tt>'\u0045'</tt>).
- *
- * <tr><td valign="top"> <tt>'g'</tt>
+ * <td> The upper-case variant of {@code 'e'}. The exponent symbol
+ * will be {@code 'E'} (<tt>'\u0045'</tt>).
+ *
+ * <tr><td valign="top"> {@code 'g'}
* <td valign="top"> <tt>'\u0067'</tt>
* <td> Requires the output to be formatted in general scientific notation
* as described below. The <a href="#l10n algorithm">localization
@@ -1437,17 +1437,17 @@
*
* <p> The total number of significant digits in <i>m</i> is equal to the
* precision. If the precision is not specified, then the default value is
- * <tt>6</tt>. If the precision is <tt>0</tt>, then it is taken to be
- * <tt>1</tt>.
- *
- * <p> If the <tt>'#'</tt> flag is given then an {@link
+ * {@code 6}. If the precision is {@code 0}, then it is taken to be
+ * {@code 1}.
+ *
+ * <p> If the {@code '#'} flag is given then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td valign="top"> <tt>'G'</tt>
+ * <tr><td valign="top"> {@code 'G'}
* <td valign="top"> <tt>'\u0047'</tt>
- * <td> The upper-case variant of <tt>'g'</tt>.
- *
- * <tr><td valign="top"> <tt>'f'</tt>
+ * <td> The upper-case variant of {@code 'g'}.
+ *
+ * <tr><td valign="top"> {@code 'f'}
* <td valign="top"> <tt>'\u0066'</tt>
* <td> Requires the output to be formatted using <a name="decimal">decimal
* format</a>. The <a href="#l10n algorithm">localization algorithm</a> is
@@ -1465,7 +1465,7 @@
*
* <p> The number of digits in the result for the fractional part of
* <i>m</i> or <i>a</i> is equal to the precision. If the precision is not
- * specified then the default value is <tt>6</tt>. If the precision is
+ * specified then the default value is {@code 6}. If the precision is
* less than the number of digits which would appear after the decimal
* point in the string returned by {@link Float#toString(float)} or {@link
* Double#toString(double)} respectively, then the value will be rounded
@@ -1479,7 +1479,7 @@
* <p> All <a href="#intFlags">flags</a> defined for Byte, Short, Integer, and
* Long apply.
*
- * <p> If the <tt>'#'</tt> flag is given, then the decimal separator will
+ * <p> If the {@code '#'} flag is given, then the decimal separator will
* always be present.
*
* <p> The <a href="#floatdFlags">default behavior</a> when no flags are
@@ -1491,114 +1491,114 @@
*
* <h4><a name="ddt">Date/Time</a></h4>
*
- * <p> This conversion may be applied to <tt>long</tt>, {@link Long}, {@link
+ * <p> This conversion may be applied to {@code long}, {@link Long}, {@link
* Calendar}, and {@link Date}.
*
* <table cellpadding=5 summary="DTConv">
*
- * <tr><td valign="top"> <tt>'t'</tt>
+ * <tr><td valign="top"> {@code 't'}
* <td valign="top"> <tt>'\u0074'</tt>
* <td> Prefix for date and time conversion characters.
- * <tr><td valign="top"> <tt>'T'</tt>
+ * <tr><td valign="top"> {@code 'T'}
* <td valign="top"> <tt>'\u0054'</tt>
- * <td> The upper-case variant of <tt>'t'</tt>.
+ * <td> The upper-case variant of {@code 't'}.
*
* </table>
*
* <p> The following date and time conversion character suffixes are defined
- * for the <tt>'t'</tt> and <tt>'T'</tt> conversions. The types are similar to
- * but not completely identical to those defined by GNU <tt>date</tt> and
- * POSIX <tt>strftime(3c)</tt>. Additional conversion types are provided to
- * access Java-specific functionality (e.g. <tt>'L'</tt> for milliseconds
+ * for the {@code 't'} and {@code 'T'} conversions. The types are similar to
+ * but not completely identical to those defined by GNU {@code date} and
+ * POSIX {@code strftime(3c)}. Additional conversion types are provided to
+ * access Java-specific functionality (e.g. {@code 'L'} for milliseconds
* within the second).
*
* <p> The following conversion characters are used for formatting times:
*
* <table cellpadding=5 summary="time">
*
- * <tr><td valign="top"> <tt>'H'</tt>
+ * <tr><td valign="top"> {@code 'H'}
* <td valign="top"> <tt>'\u0048'</tt>
* <td> Hour of the day for the 24-hour clock, formatted as two digits with
- * a leading zero as necessary i.e. <tt>00 - 23</tt>. <tt>00</tt>
+ * a leading zero as necessary i.e. {@code 00 - 23}. {@code 00}
* corresponds to midnight.
*
- * <tr><td valign="top"><tt>'I'</tt>
+ * <tr><td valign="top">{@code 'I'}
* <td valign="top"> <tt>'\u0049'</tt>
* <td> Hour for the 12-hour clock, formatted as two digits with a leading
- * zero as necessary, i.e. <tt>01 - 12</tt>. <tt>01</tt> corresponds to
+ * zero as necessary, i.e. {@code 01 - 12}. {@code 01} corresponds to
* one o'clock (either morning or afternoon).
*
- * <tr><td valign="top"><tt>'k'</tt>
+ * <tr><td valign="top">{@code 'k'}
* <td valign="top"> <tt>'\u006b'</tt>
- * <td> Hour of the day for the 24-hour clock, i.e. <tt>0 - 23</tt>.
- * <tt>0</tt> corresponds to midnight.
- *
- * <tr><td valign="top"><tt>'l'</tt>
+ * <td> Hour of the day for the 24-hour clock, i.e. {@code 0 - 23}.
+ * {@code 0} corresponds to midnight.
+ *
+ * <tr><td valign="top">{@code 'l'}
* <td valign="top"> <tt>'\u006c'</tt>
- * <td> Hour for the 12-hour clock, i.e. <tt>1 - 12</tt>. <tt>1</tt>
+ * <td> Hour for the 12-hour clock, i.e. {@code 1 - 12}. {@code 1}
* corresponds to one o'clock (either morning or afternoon).
*
- * <tr><td valign="top"><tt>'M'</tt>
+ * <tr><td valign="top">{@code 'M'}
* <td valign="top"> <tt>'\u004d'</tt>
* <td> Minute within the hour formatted as two digits with a leading zero
- * as necessary, i.e. <tt>00 - 59</tt>.
- *
- * <tr><td valign="top"><tt>'S'</tt>
+ * as necessary, i.e. {@code 00 - 59}.
+ *
+ * <tr><td valign="top">{@code 'S'}
* <td valign="top"> <tt>'\u0053'</tt>
* <td> Seconds within the minute, formatted as two digits with a leading
- * zero as necessary, i.e. <tt>00 - 60</tt> ("<tt>60</tt>" is a special
+ * zero as necessary, i.e. {@code 00 - 60} ("{@code 60}" is a special
* value required to support leap seconds).
*
- * <tr><td valign="top"><tt>'L'</tt>
+ * <tr><td valign="top">{@code 'L'}
* <td valign="top"> <tt>'\u004c'</tt>
* <td> Millisecond within the second formatted as three digits with
- * leading zeros as necessary, i.e. <tt>000 - 999</tt>.
- *
- * <tr><td valign="top"><tt>'N'</tt>
+ * leading zeros as necessary, i.e. {@code 000 - 999}.
+ *
+ * <tr><td valign="top">{@code 'N'}
* <td valign="top"> <tt>'\u004e'</tt>
* <td> Nanosecond within the second, formatted as nine digits with leading
- * zeros as necessary, i.e. <tt>000000000 - 999999999</tt>. The precision
+ * zeros as necessary, i.e. {@code 000000000 - 999999999}. The precision
* of this value is limited by the resolution of the underlying operating
* system or hardware.
*
- * <tr><td valign="top"><tt>'p'</tt>
+ * <tr><td valign="top">{@code 'p'}
* <td valign="top"> <tt>'\u0070'</tt>
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker
- * in lower case, e.g."<tt>am</tt>" or "<tt>pm</tt>". Use of the
- * conversion prefix <tt>'T'</tt> forces this output to upper case. (Note
- * that <tt>'p'</tt> produces lower-case output. This is different from
- * GNU <tt>date</tt> and POSIX <tt>strftime(3c)</tt> which produce
+ * in lower case, e.g."{@code am}" or "{@code pm}". Use of the
+ * conversion prefix {@code 'T'} forces this output to upper case. (Note
+ * that {@code 'p'} produces lower-case output. This is different from
+ * GNU {@code date} and POSIX {@code strftime(3c)} which produce
* upper-case output.)
*
- * <tr><td valign="top"><tt>'z'</tt>
+ * <tr><td valign="top">{@code 'z'}
* <td valign="top"> <tt>'\u007a'</tt>
* <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>
- * style numeric time zone offset from GMT, e.g. <tt>-0800</tt>. This
+ * style numeric time zone offset from GMT, e.g. {@code -0800}. This
* value will be adjusted as necessary for Daylight Saving Time. For
- * <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is
- * the {@plainlink TimeZone#getDefault() default time zone} for this
+ * {@code long}, {@link Long}, and {@link Date} the time zone used is
+ * the {@linkplain TimeZone#getDefault() default time zone} for this
* instance of the Java virtual machine.
*
- * <tr><td valign="top"><tt>'Z'</tt>
+ * <tr><td valign="top">{@code 'Z'}
* <td> A string representing the abbreviation for the time zone. This
* value will be adjusted as necessary for Daylight Saving Time. For
- * <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is
- * the {@plainlink TimeZone#getDefault() default time zone} for this
+ * {@code long}, {@link Long}, and {@link Date} the time zone used is
+ * the {@linkplain TimeZone#getDefault() default time zone} for this
* instance of the Java virtual machine. The Formatter's locale will
* supersede the locale of the argument (if any).
*
- * <tr><td valign="top"><tt>'s'</tt>
+ * <tr><td valign="top">{@code 's'}
* <td valign="top"> <tt>'\u0073'</tt>
* <td> Seconds since the beginning of the epoch starting at 1 January 1970
- * <tt>00:00:00</tt> UTC, i.e. <tt>Long.MIN_VALUE/1000</tt> to
- * <tt>Long.MAX_VALUE/1000</tt>.
- *
- * <tr><td valign="top"><tt>'Q'</tt>
+ * {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE/1000} to
+ * {@code Long.MAX_VALUE/1000}.
+ *
+ * <tr><td valign="top">{@code 'Q'}
* <td valign="top"> <tt>'\u004f'</tt>
* <td> Milliseconds since the beginning of the epoch starting at 1 January
- * 1970 <tt>00:00:00</tt> UTC, i.e. <tt>Long.MIN_VALUE</tt> to
- * <tt>Long.MAX_VALUE</tt>. The precision of this value is limited by
+ * 1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
+ * {@code Long.MAX_VALUE}. The precision of this value is limited by
* the resolution of the underlying operating system or hardware.
*
* </table>
@@ -1607,71 +1607,71 @@
*
* <table cellpadding=5 summary="date">
*
- * <tr><td valign="top"><tt>'B'</tt>
+ * <tr><td valign="top">{@code 'B'}
* <td valign="top"> <tt>'\u0042'</tt>
* <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
- * full month name}, e.g. <tt>"January"</tt>, <tt>"February"</tt>.
- *
- * <tr><td valign="top"><tt>'b'</tt>
+ * full month name}, e.g. {@code "January"}, {@code "February"}.
+ *
+ * <tr><td valign="top">{@code 'b'}
* <td valign="top"> <tt>'\u0062'</tt>
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getShortMonths abbreviated month name},
- * e.g. <tt>"Jan"</tt>, <tt>"Feb"</tt>.
- *
- * <tr><td valign="top"><tt>'h'</tt>
+ * e.g. {@code "Jan"}, {@code "Feb"}.
+ *
+ * <tr><td valign="top">{@code 'h'}
* <td valign="top"> <tt>'\u0068'</tt>
- * <td> Same as <tt>'b'</tt>.
- *
- * <tr><td valign="top"><tt>'A'</tt>
+ * <td> Same as {@code 'b'}.
+ *
+ * <tr><td valign="top">{@code 'A'}
* <td valign="top"> <tt>'\u0041'</tt>
* <td> Locale-specific full name of the {@linkplain
* java.text.DateFormatSymbols#getWeekdays day of the week},
- * e.g. <tt>"Sunday"</tt>, <tt>"Monday"</tt>
- *
- * <tr><td valign="top"><tt>'a'</tt>
+ * e.g. {@code "Sunday"}, {@code "Monday"}
+ *
+ * <tr><td valign="top">{@code 'a'}
* <td valign="top"> <tt>'\u0061'</tt>
* <td> Locale-specific short name of the {@linkplain
* java.text.DateFormatSymbols#getShortWeekdays day of the week},
- * e.g. <tt>"Sun"</tt>, <tt>"Mon"</tt>
- *
- * <tr><td valign="top"><tt>'C'</tt>
+ * e.g. {@code "Sun"}, {@code "Mon"}
+ *
+ * <tr><td valign="top">{@code 'C'}
* <td valign="top"> <tt>'\u0043'</tt>
- * <td> Four-digit year divided by <tt>100</tt>, formatted as two digits
- * with leading zero as necessary, i.e. <tt>00 - 99</tt>
- *
- * <tr><td valign="top"><tt>'Y'</tt>
+ * <td> Four-digit year divided by {@code 100}, formatted as two digits
+ * with leading zero as necessary, i.e. {@code 00 - 99}
+ *
+ * <tr><td valign="top">{@code 'Y'}
* <td valign="top"> <tt>'\u0059'</tt> <td> Year, formatted to at least
- * four digits with leading zeros as necessary, e.g. <tt>0092</tt> equals
- * <tt>92</tt> CE for the Gregorian calendar.
- *
- * <tr><td valign="top"><tt>'y'</tt>
+ * four digits with leading zeros as necessary, e.g. {@code 0092} equals
+ * {@code 92} CE for the Gregorian calendar.
+ *
+ * <tr><td valign="top">{@code 'y'}
* <td valign="top"> <tt>'\u0079'</tt>
* <td> Last two digits of the year, formatted with leading zeros as
- * necessary, i.e. <tt>00 - 99</tt>.
- *
- * <tr><td valign="top"><tt>'j'</tt>
+ * necessary, i.e. {@code 00 - 99}.
+ *
+ * <tr><td valign="top">{@code 'j'}
* <td valign="top"> <tt>'\u006a'</tt>
* <td> Day of year, formatted as three digits with leading zeros as
- * necessary, e.g. <tt>001 - 366</tt> for the Gregorian calendar.
- * <tt>001</tt> corresponds to the first day of the year.
- *
- * <tr><td valign="top"><tt>'m'</tt>
+ * necessary, e.g. {@code 001 - 366} for the Gregorian calendar.
+ * {@code 001} corresponds to the first day of the year.
+ *
+ * <tr><td valign="top">{@code 'm'}
* <td valign="top"> <tt>'\u006d'</tt>
* <td> Month, formatted as two digits with leading zeros as necessary,
- * i.e. <tt>01 - 13</tt>, where "<tt>01</tt>" is the first month of the
- * year and ("<tt>13</tt>" is a special value required to support lunar
+ * i.e. {@code 01 - 13}, where "{@code 01}" is the first month of the
+ * year and ("{@code 13}" is a special value required to support lunar
* calendars).
*
- * <tr><td valign="top"><tt>'d'</tt>
+ * <tr><td valign="top">{@code 'd'}
* <td valign="top"> <tt>'\u0064'</tt>
* <td> Day of month, formatted as two digits with leading zeros as
- * necessary, i.e. <tt>01 - 31</tt>, where "<tt>01</tt>" is the first day
+ * necessary, i.e. {@code 01 - 31}, where "{@code 01}" is the first day
* of the month.
*
- * <tr><td valign="top"><tt>'e'</tt>
+ * <tr><td valign="top">{@code 'e'}
* <td valign="top"> <tt>'\u0065'</tt>
- * <td> Day of month, formatted as two digits, i.e. <tt>1 - 31</tt> where
- * "<tt>1</tt>" is the first day of the month.
+ * <td> Day of month, formatted as two digits, i.e. {@code 1 - 31} where
+ * "{@code 1}" is the first day of the month.
*
* </table>
*
@@ -1680,45 +1680,45 @@
*
* <table cellpadding=5 summary="composites">
*
- * <tr><td valign="top"><tt>'R'</tt>
+ * <tr><td valign="top">{@code 'R'}
* <td valign="top"> <tt>'\u0052'</tt>
- * <td> Time formatted for the 24-hour clock as <tt>"%tH:%tM"</tt>
- *
- * <tr><td valign="top"><tt>'T'</tt>
+ * <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
+ *
+ * <tr><td valign="top">{@code 'T'}
* <td valign="top"> <tt>'\u0054'</tt>
- * <td> Time formatted for the 24-hour clock as <tt>"%tH:%tM:%tS"</tt>.
- *
- * <tr><td valign="top"><tt>'r'</tt>
+ * <td> Time formatted for the 24-hour clock as {@code "%tH:%tM:%tS"}.
+ *
+ * <tr><td valign="top">{@code 'r'}
* <td valign="top"> <tt>'\u0072'</tt>
- * <td> Time formatted for the 12-hour clock as <tt>"%tI:%tM:%tS
- * %Tp"</tt>. The location of the morning or afternoon marker
- * (<tt>'%Tp'</tt>) may be locale-dependent.
- *
- * <tr><td valign="top"><tt>'D'</tt>
+ * <td> Time formatted for the 12-hour clock as {@code "%tI:%tM:%tS
+ * %Tp"}. The location of the morning or afternoon marker
+ * ({@code '%Tp'}) may be locale-dependent.
+ *
+ * <tr><td valign="top">{@code 'D'}
* <td valign="top"> <tt>'\u0044'</tt>
- * <td> Date formatted as <tt>"%tm/%td/%ty"</tt>.
- *
- * <tr><td valign="top"><tt>'F'</tt>
+ * <td> Date formatted as {@code "%tm/%td/%ty"}.
+ *
+ * <tr><td valign="top">{@code 'F'}
* <td valign="top"> <tt>'\u0046'</tt>
* <td> <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>
- * complete date formatted as <tt>"%tY-%tm-%td"</tt>.
- *
- * <tr><td valign="top"><tt>'c'</tt>
+ * complete date formatted as {@code "%tY-%tm-%td"}.
+ *
+ * <tr><td valign="top">{@code 'c'}
* <td valign="top"> <tt>'\u0063'</tt>
- * <td> Date and time formatted as <tt>"%ta %tb %td %tT %tZ %tY"</tt>,
- * e.g. <tt>"Sun Jul 20 16:17:00 EDT 1969"</tt>.
+ * <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
+ * e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
*
* </table>
*
- * <p> The <tt>'-'</tt> flag defined for <a href="#dFlags">General
- * conversions</a> applies. If the <tt>'#'</tt> flag is given, then a {@link
+ * <p> The {@code '-'} flag defined for <a href="#dFlags">General
+ * conversions</a> applies. If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
* <p> The <a name="dtWidth">width</a> is the minimum number of characters to
* be written to the output. If the length of the converted value is less than
- * the <tt>width</tt> then the output will be padded by spaces
+ * the {@code width} then the output will be padded by spaces
* (<tt>'\u0020'</tt>) until the total number of characters equals width.
- * The padding is on the left by default. If the <tt>'-'</tt> flag is given
+ * The padding is on the left by default. If the {@code '-'} flag is given
* then the padding will be on the right. If width is not specified then there
* is no minimum.
*
@@ -1731,17 +1731,17 @@
*
* <table cellpadding=5 summary="DTConv">
*
- * <tr><td valign="top"><tt>'%'</tt>
- * <td> The result is a literal <tt>'%'</tt> (<tt>'\u0025'</tt>)
+ * <tr><td valign="top">{@code '%'}
+ * <td> The result is a literal {@code '%'} (<tt>'\u0025'</tt>)
*
* <p> The <a name="dtWidth">width</a> is the minimum number of characters to
- * be written to the output including the <tt>'%'</tt>. If the length of the
- * converted value is less than the <tt>width</tt> then the output will be
+ * be written to the output including the {@code '%'}. If the length of the
+ * converted value is less than the {@code width} then the output will be
* padded by spaces (<tt>'\u0020'</tt>) until the total number of
* characters equals width. The padding is on the left. If width is not
- * specified then just the <tt>'%'</tt> is output.
- *
- * <p> The <tt>'-'</tt> flag defined for <a href="#dFlags">General
+ * specified then just the {@code '%'} is output.
+ *
+ * <p> The {@code '-'} flag defined for <a href="#dFlags">General
* conversions</a> applies. If any other flags are provided, then a
* {@link FormatFlagsConversionMismatchException} will be thrown.
*
@@ -1756,7 +1756,7 @@
*
* <table cellpadding=5 summary="DTConv">
*
- * <tr><td valign="top"><tt>'n'</tt>
+ * <tr><td valign="top">{@code 'n'}
* <td> the platform-specific line separator as returned by {@link
* System#getProperty System.getProperty("line.separator")}.
*
@@ -1775,7 +1775,7 @@
* <li> <i>Explicit indexing</i> is used when the format specifier contains an
* argument index. The argument index is a decimal integer indicating the
* position of the argument in the argument list. The first argument is
- * referenced by "<tt>1$</tt>", the second by "<tt>2$</tt>", etc. An argument
+ * referenced by "{@code 1$}", the second by "{@code 2$}", etc. An argument
* may be referenced more than once.
*
* <p> For example:
@@ -1787,7 +1787,7 @@
* </pre></blockquote>
*
* <li> <i>Relative indexing</i> is used when the format specifier contains a
- * <tt>'<'</tt> (<tt>'\u003c'</tt>) flag which causes the argument for
+ * {@code '<'} (<tt>'\u003c'</tt>) flag which causes the argument for
* the previous format specifier to be re-used. If there is no previous
* argument, then a {@link MissingFormatArgumentException} is thrown.
*
@@ -1798,7 +1798,7 @@
* </pre></blockquote>
*
* <li> <i>Ordinary indexing</i> is used when the format specifier contains
- * neither an argument index nor a <tt>'<'</tt> flag. Each format specifier
+ * neither an argument index nor a {@code '<'} flag. Each format specifier
* which uses ordinary indexing is assigned a sequential implicit index into
* argument list which is independent of the indices used by explicit or
* relative indexing.
@@ -1828,7 +1828,7 @@
* <p> If there are more arguments than format specifiers, the extra arguments
* are ignored.
*
- * <p> Unless otherwise specified, passing a <tt>null</tt> argument to any
+ * <p> Unless otherwise specified, passing a {@code null} argument to any
* method or constructor in this class will cause a {@link
* NullPointerException} to be thrown.
*
@@ -1876,8 +1876,8 @@
* locale} for this instance of the Java virtual machine.
*
* @param a
- * Destination for the formatted output. If <tt>a</tt> is
- * <tt>null</tt> then a {@link StringBuilder} will be created.
+ * Destination for the formatted output. If {@code a} is
+ * {@code null} then a {@link StringBuilder} will be created.
*/
public Formatter(Appendable a) {
if (a == null)
@@ -1895,7 +1895,7 @@
*
* @param l
* The {@linkplain java.util.Locale locale} to apply during
- * formatting. If <tt>l</tt> is <tt>null</tt> then no localization
+ * formatting. If {@code l} is {@code null} then no localization
* is applied.
*/
public Formatter(Locale l) {
@@ -1906,12 +1906,12 @@
* Constructs a new formatter with the specified destination and locale.
*
* @param a
- * Destination for the formatted output. If <tt>a</tt> is
- * <tt>null</tt> then a {@link StringBuilder} will be created.
+ * Destination for the formatted output. If {@code a} is
+ * {@code null} then a {@link StringBuilder} will be created.
*
* @param l
* The {@linkplain java.util.Locale locale} to apply during
- * formatting. If <tt>l</tt> is <tt>null</tt> then no localization
+ * formatting. If {@code l} is {@code null} then no localization
* is applied.
*/
public Formatter(Appendable a, Locale l) {
@@ -2004,7 +2004,7 @@
*
* @param l
* The {@linkplain java.util.Locale locale} to apply during
- * formatting. If <tt>l</tt> is <tt>null</tt> then no localization
+ * formatting. If {@code l} is {@code null} then no localization
* is applied.
*
* @throws FileNotFoundException
@@ -2112,7 +2112,7 @@
*
* @param l
* The {@linkplain java.util.Locale locale} to apply during
- * formatting. If <tt>l</tt> is <tt>null</tt> then no localization
+ * formatting. If {@code l} is {@code null} then no localization
* is applied.
*
* @throws FileNotFoundException
@@ -2212,7 +2212,7 @@
*
* @param l
* The {@linkplain java.util.Locale locale} to apply during
- * formatting. If <tt>l</tt> is <tt>null</tt> then no localization
+ * formatting. If {@code l} is {@code null} then no localization
* is applied.
*
* @throws UnsupportedEncodingException
@@ -2237,7 +2237,7 @@
* <p> The {@link #format(java.util.Locale,String,Object...) format} method
* for this object which has a locale argument does not change this value.
*
- * @return <tt>null</tt> if no localization is applied, otherwise a
+ * @return {@code null} if no localization is applied, otherwise a
* locale
*
* @throws FormatterClosedException
@@ -2264,7 +2264,7 @@
}
/**
- * Returns the result of invoking <tt>toString()</tt> on the destination
+ * Returns the result of invoking {@code toString()} on the destination
* for the output. For example, the following code formats text into a
* {@link StringBuilder} then retrieves the resultant string:
*
@@ -2281,13 +2281,13 @@
* <pre>
* out().toString() </pre>
*
- * <p> Depending on the specification of <tt>toString</tt> for the {@link
+ * <p> Depending on the specification of {@code toString} for the {@link
* Appendable}, the returned string may or may not contain the characters
* written to the destination. For instance, buffers typically return
- * their contents in <tt>toString()</tt>, but streams cannot since the
+ * their contents in {@code toString()}, but streams cannot since the
* data is discarded.
*
- * @return The result of invoking <tt>toString()</tt> on the destination
+ * @return The result of invoking {@code toString()} on the destination
* for the output
*
* @throws FormatterClosedException
@@ -2301,7 +2301,7 @@
/**
* Flushes this formatter. If the destination implements the {@link
- * java.io.Flushable} interface, its <tt>flush</tt> method will be invoked.
+ * java.io.Flushable} interface, its {@code flush} method will be invoked.
*
* <p> Flushing a formatter writes any buffered output in the destination
* to the underlying stream.
@@ -2323,7 +2323,7 @@
/**
* Closes this formatter. If the destination implements the {@link
- * java.io.Closeable} interface, its <tt>close</tt> method will be invoked.
+ * java.io.Closeable} interface, its {@code close} method will be invoked.
*
* <p> Closing a formatter allows it to release resources it may be holding
* (such as open files). If the formatter is already closed, then invoking
@@ -2352,13 +2352,13 @@
}
/**
- * Returns the <tt>IOException</tt> last thrown by this formatter's {@link
+ * Returns the {@code IOException} last thrown by this formatter's {@link
* Appendable}.
*
- * <p> If the destination's <tt>append()</tt> method never throws
- * <tt>IOException</tt>, then this method will always return <tt>null</tt>.
+ * <p> If the destination's {@code append()} method never throws
+ * {@code IOException}, then this method will always return {@code null}.
*
- * @return The last exception thrown by the Appendable or <tt>null</tt> if
+ * @return The last exception thrown by the Appendable or {@code null} if
* no such exception exists.
*/
public IOException ioException() {
@@ -2406,7 +2406,7 @@
*
* @param l
* The {@linkplain java.util.Locale locale} to apply during
- * formatting. If <tt>l</tt> is <tt>null</tt> then no localization
+ * formatting. If {@code l} is {@code null} then no localization
* is applied. This does not change this object's locale that was
* set during construction.
*
@@ -4196,7 +4196,7 @@
}
}
- // Returns a string representation of the current <tt>Flags</tt>.
+ // Returns a string representation of the current {@code Flags}.
public static String toString(Flags f) {
return f.toString();
}
--- a/jdk/src/share/classes/java/util/logging/Logger.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/java/util/logging/Logger.java Thu Feb 26 14:25:55 2009 -0800
@@ -27,6 +27,7 @@
package java.util.logging;
import java.util.*;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.security.*;
import java.lang.ref.WeakReference;
@@ -165,10 +166,11 @@
private static final int offValue = Level.OFF.intValue();
private LogManager manager;
private String name;
- private ArrayList<Handler> handlers;
+ private final CopyOnWriteArrayList<Handler> handlers =
+ new CopyOnWriteArrayList<Handler>();
private String resourceBundleName;
- private boolean useParentHandlers = true;
- private Filter filter;
+ private volatile boolean useParentHandlers = true;
+ private volatile Filter filter;
private boolean anonymous;
private ResourceBundle catalog; // Cached resource bundle
@@ -180,9 +182,9 @@
private static Object treeLock = new Object();
// We keep weak references from parents to children, but strong
// references from children to parents.
- private Logger parent; // our nearest parent.
+ private volatile Logger parent; // our nearest parent.
private ArrayList<WeakReference<Logger>> kids; // WeakReferences to loggers that have us as parent
- private Level levelObject;
+ private volatile Level levelObject;
private volatile int levelValue; // current effective level value
/**
@@ -438,7 +440,7 @@
* @exception SecurityException if a security manager exists and if
* the caller does not have LoggingPermission("control").
*/
- public synchronized void setFilter(Filter newFilter) throws SecurityException {
+ public void setFilter(Filter newFilter) throws SecurityException {
checkAccess();
filter = newFilter;
}
@@ -448,7 +450,7 @@
*
* @return a filter object (may be null)
*/
- public synchronized Filter getFilter() {
+ public Filter getFilter() {
return filter;
}
@@ -465,10 +467,9 @@
if (record.getLevel().intValue() < levelValue || levelValue == offValue) {
return;
}
- synchronized (this) {
- if (filter != null && !filter.isLoggable(record)) {
- return;
- }
+ Filter theFilter = filter;
+ if (theFilter != null && !theFilter.isLoggable(record)) {
+ return;
}
// Post the LogRecord to all our Handlers, and then to
@@ -476,12 +477,8 @@
Logger logger = this;
while (logger != null) {
- Handler targets[] = logger.getHandlers();
-
- if (targets != null) {
- for (int i = 0; i < targets.length; i++) {
- targets[i].publish(record);
- }
+ for (Handler handler : logger.handlers) {
+ handler.publish(record);
}
if (!logger.getUseParentHandlers()) {
@@ -1182,13 +1179,10 @@
* @exception SecurityException if a security manager exists and if
* the caller does not have LoggingPermission("control").
*/
- public synchronized void addHandler(Handler handler) throws SecurityException {
+ public void addHandler(Handler handler) throws SecurityException {
// Check for null handler
handler.getClass();
checkAccess();
- if (handlers == null) {
- handlers = new ArrayList<Handler>();
- }
handlers.add(handler);
}
@@ -1201,14 +1195,11 @@
* @exception SecurityException if a security manager exists and if
* the caller does not have LoggingPermission("control").
*/
- public synchronized void removeHandler(Handler handler) throws SecurityException {
+ public void removeHandler(Handler handler) throws SecurityException {
checkAccess();
if (handler == null) {
return;
}
- if (handlers == null) {
- return;
- }
handlers.remove(handler);
}
@@ -1217,11 +1208,8 @@
* <p>
* @return an array of all registered Handlers
*/
- public synchronized Handler[] getHandlers() {
- if (handlers == null) {
- return emptyHandlers;
- }
- return handlers.toArray(new Handler[handlers.size()]);
+ public Handler[] getHandlers() {
+ return handlers.toArray(emptyHandlers);
}
/**
@@ -1235,7 +1223,7 @@
* @exception SecurityException if a security manager exists and if
* the caller does not have LoggingPermission("control").
*/
- public synchronized void setUseParentHandlers(boolean useParentHandlers) {
+ public void setUseParentHandlers(boolean useParentHandlers) {
checkAccess();
this.useParentHandlers = useParentHandlers;
}
@@ -1246,7 +1234,7 @@
*
* @return true if output is to be sent to the logger's parent
*/
- public synchronized boolean getUseParentHandlers() {
+ public boolean getUseParentHandlers() {
return useParentHandlers;
}
@@ -1354,9 +1342,12 @@
* @return nearest existing parent Logger
*/
public Logger getParent() {
- synchronized (treeLock) {
- return parent;
- }
+ // Note: this used to be synchronized on treeLock. However, this only
+ // provided memory semantics, as there was no guarantee that the caller
+ // would synchronize on treeLock (in fact, there is no way for external
+ // callers to so synchronize). Therefore, we have made parent volatile
+ // instead.
+ return parent;
}
/**
--- a/jdk/src/share/classes/javax/swing/JRootPane.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/javax/swing/JRootPane.java Thu Feb 26 14:25:55 2009 -0800
@@ -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);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/awt/AWTAccessor.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,77 @@
+/*
+ * 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.awt;
+
+import java.awt.*;
+import sun.misc.Unsafe;
+
+/** 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 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);
+ }
+
+ /* The java.awt.Component class accessor object.
+ */
+ private static ComponentAccessor componentAccessor;
+
+ /** 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.Window class.
+ */
+ public static ComponentAccessor getComponentAccessor() {
+ if (componentAccessor == null) {
+ unsafe.ensureClassInitialized(Component.class);
+ }
+
+ return componentAccessor;
+ }
+}
--- a/jdk/src/share/classes/sun/awt/HeadlessToolkit.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/sun/awt/HeadlessToolkit.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-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
@@ -456,6 +456,10 @@
return tk.getAWTEventListeners();
}
+ public AWTEventListener[] getAWTEventListeners(long eventMask) {
+ return tk.getAWTEventListeners(eventMask);
+ }
+
public boolean isDesktopSupported() {
return false;
}
@@ -464,4 +468,8 @@
throws HeadlessException{
throw new HeadlessException();
}
+
+ public boolean areExtraMouseButtonsEnabled() throws HeadlessException{
+ throw new HeadlessException();
+ }
}
--- a/jdk/src/share/classes/sun/awt/SunToolkit.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/sun/awt/SunToolkit.java Thu Feb 26 14:25:55 2009 -0800
@@ -1972,6 +1972,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
@@ -2008,26 +2023,12 @@
/*
* Continually post pending AWTEvents to the Java EventQueue.
*/
- public void flush() {
- if (queueHead != null) {
- EventQueueItem tempQueue;
- /*
- * We have to execute the loop inside the synchronized block
- * to ensure that the flush is completed before a new event
- * can be posted to this queue.
- */
- synchronized (this) {
- tempQueue = queueHead;
- queueHead = queueTail = null;
- /*
- * If this PostEventQueue is flushed in parallel on two
- * different threads tempQueue will be null for one of them.
- */
- while (tempQueue != null) {
- eventQueue.postEvent(tempQueue.event);
- tempQueue = tempQueue.next;
- }
- }
+ public synchronized void flush() {
+ EventQueueItem tempQueue = queueHead;
+ queueHead = queueTail = null;
+ while (tempQueue != null) {
+ eventQueue.postEvent(tempQueue.event);
+ tempQueue = tempQueue.next;
}
}
--- a/jdk/src/share/classes/sun/java2d/pipe/Region.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/sun/java2d/pipe/Region.java Thu Feb 26 14:25:55 2009 -0800
@@ -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;
}
--- a/jdk/src/share/classes/sun/misc/URLClassPath.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/sun/misc/URLClassPath.java Thu Feb 26 14:25:55 2009 -0800
@@ -25,17 +25,7 @@
package sun.misc;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.Hashtable;
-import java.util.NoSuchElementException;
-import java.util.Stack;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.StringTokenizer;
-import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.*;
import java.util.jar.JarFile;
import sun.misc.JarIndex;
import sun.misc.InvalidJarIndexException;
@@ -52,12 +42,7 @@
import java.net.HttpURLConnection;
import java.net.URLStreamHandler;
import java.net.URLStreamHandlerFactory;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
+import java.io.*;
import java.security.AccessController;
import java.security.AccessControlException;
import java.security.CodeSigner;
@@ -100,6 +85,9 @@
/* The jar protocol handler to use when creating new URLs */
private URLStreamHandler jarHandler;
+ /* Whether this URLClassLoader has been closed yet */
+ private boolean closed = false;
+
/**
* Creates a new URLClassPath for the given URLs. The URLs will be
* searched in the order specified for classes and resources. A URL
@@ -124,6 +112,22 @@
this(urls, null);
}
+ public synchronized List<IOException> closeLoaders() {
+ if (closed) {
+ return Collections.emptyList();
+ }
+ List<IOException> result = new LinkedList<IOException>();
+ for (Loader loader : loaders) {
+ try {
+ loader.close();
+ } catch (IOException e) {
+ result.add (e);
+ }
+ }
+ closed = true;
+ return result;
+ }
+
/**
* Appends the specified URL to the search path of directory and JAR
* file URLs from which to load classes and resources.
@@ -293,6 +297,9 @@
* if the specified index is out of range.
*/
private synchronized Loader getLoader(int index) {
+ if (closed) {
+ return null;
+ }
// Expand URL search path until the request can be satisfied
// or the URL stack is empty.
while (loaders.size() < index + 1) {
@@ -453,7 +460,7 @@
* Inner class used to represent a loader of resources and classes
* from a base URL.
*/
- private static class Loader {
+ private static class Loader implements Closeable {
private final URL base;
/*
@@ -545,6 +552,12 @@
}
/*
+ * close this loader and release all resources
+ * method overridden in sub-classes
+ */
+ public void close () throws IOException {}
+
+ /*
* Returns the local class path for this loader, or null if none.
*/
URL[] getClassPath() throws IOException {
@@ -562,6 +575,7 @@
private MetaIndex metaIndex;
private URLStreamHandler handler;
private HashMap<URL, Loader> lmap;
+ private boolean closed = false;
/*
* Creates a new JarLoader for the specified URL referring to
@@ -604,6 +618,17 @@
}
}
+ @Override
+ public void close () throws IOException {
+ // closing is synchronized at higher level
+ if (!closed) {
+ closed = true;
+ // in case not already open.
+ ensureOpen();
+ jar.close();
+ }
+ }
+
JarFile getJarFile () {
return jar;
}
--- a/jdk/src/share/classes/sun/security/krb5/Config.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java Thu Feb 26 14:25:55 2009 -0800
@@ -39,7 +39,6 @@
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Enumeration;
-import java.util.List;
import java.util.StringTokenizer;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -156,11 +155,7 @@
configFile = loadConfigFile();
stanzaTable = parseStanzaTable(configFile);
} catch (IOException ioe) {
- KrbException ke = new KrbException("Could not load " +
- "configuration file " +
- ioe.getMessage());
- ke.initCause(ioe);
- throw(ke);
+ // No krb5.conf, no problem. We'll use DNS etc.
}
}
}
@@ -1057,7 +1052,12 @@
public boolean useDNS(String name) {
String value = getDefault(name, "libdefaults");
if (value == null) {
- return getDefaultBooleanValue("dns_fallback", "libdefaults");
+ value = getDefault("dns_fallback", "libdefaults");
+ if ("false".equalsIgnoreCase(value)) {
+ return false;
+ } else {
+ return true;
+ }
} else {
return value.equalsIgnoreCase("true");
}
@@ -1079,12 +1079,39 @@
/**
* Gets default realm.
+ * @throws KrbException where no realm can be located
+ * @return the default realm, always non null
*/
public String getDefaultRealm() throws KrbException {
+ Exception cause = null;
String realm = getDefault("default_realm", "libdefaults");
if ((realm == null) && useDNS_Realm()) {
// use DNS to locate Kerberos realm
- realm = getRealmFromDNS();
+ try {
+ realm = getRealmFromDNS();
+ } catch (KrbException ke) {
+ cause = ke;
+ }
+ }
+ if (realm == null) {
+ realm = java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String osname = System.getProperty("os.name");
+ if (osname.startsWith("Windows")) {
+ return System.getenv("USERDNSDOMAIN");
+ }
+ return null;
+ }
+ });
+ }
+ if (realm == null) {
+ KrbException ke = new KrbException("Cannot locate default realm");
+ if (cause != null) {
+ ke.initCause(cause);
+ }
+ throw ke;
}
return realm;
}
@@ -1092,17 +1119,48 @@
/**
* Returns a list of KDC's with each KDC separated by a space
*
- * @param realm the realm for which the master KDC is desired
- * @return the list of KDCs
+ * @param realm the realm for which the KDC list is desired
+ * @throws KrbException if there's no way to find KDC for the realm
+ * @return the list of KDCs separated by a space, always non null
*/
public String getKDCList(String realm) throws KrbException {
if (realm == null) {
realm = getDefaultRealm();
}
+ Exception cause = null;
String kdcs = getDefault("kdc", realm);
if ((kdcs == null) && useDNS_KDC()) {
// use DNS to locate KDC
- kdcs = getKDCFromDNS(realm);
+ try {
+ kdcs = getKDCFromDNS(realm);
+ } catch (KrbException ke) {
+ cause = ke;
+ }
+ }
+ if (kdcs == null) {
+ kdcs = java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String osname = System.getProperty("os.name");
+ if (osname.startsWith("Windows")) {
+ String logonServer = System.getenv("LOGONSERVER");
+ if (logonServer != null
+ && logonServer.startsWith("\\\\")) {
+ logonServer = logonServer.substring(2);
+ }
+ return logonServer;
+ }
+ return null;
+ }
+ });
+ }
+ if (kdcs == null) {
+ KrbException ke = new KrbException("Cannot locate KDC");
+ if (cause != null) {
+ ke.initCause(cause);
+ }
+ throw ke;
}
return kdcs;
}
@@ -1117,7 +1175,7 @@
String realm = null;
String hostName = null;
try {
- hostName = InetAddress.getLocalHost().getHostName();
+ hostName = InetAddress.getLocalHost().getCanonicalHostName();
} catch (UnknownHostException e) {
KrbException ke = new KrbException(Krb5.KRB_ERR_GENERIC,
"Unable to locate Kerberos realm: " + e.getMessage());
--- a/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2006-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
@@ -133,7 +133,7 @@
*/
static String[] getKerberosService(String realmName, String protocol) {
- String dnsUrl = "dns:///_kerberos." + protocol + realmName;
+ String dnsUrl = "dns:///_kerberos." + protocol + "." + realmName;
String[] hostports = null;
try {
--- a/jdk/src/solaris/classes/sun/awt/X11/WindowDimensions.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/WindowDimensions.java Thu Feb 26 14:25:55 2009 -0800
@@ -32,10 +32,18 @@
private Insets insets;
private boolean isClientSizeSet;
+ /**
+ * If isClient is true, the bounds represent the client window area.
+ * Otherwise, they represent the entire window area, with the insets included
+ */
public WindowDimensions(int x, int y, int width, int height, boolean isClient) {
this(new Rectangle(x, y, width, height), null, isClient);
}
+ /**
+ * If isClient is true, the bounds represent the client window area.
+ * Otherwise, they represent the entire window area, with the insets included
+ */
public WindowDimensions(Rectangle rec, Insets ins, boolean isClient) {
if (rec == null) {
throw new IllegalArgumentException("Client bounds can't be null");
@@ -46,10 +54,18 @@
setInsets(ins);
}
+ /**
+ * If isClient is true, the bounds represent the client window area.
+ * Otherwise, they represent the entire window area, with the insets included
+ */
public WindowDimensions(Point loc, Dimension size, Insets in, boolean isClient) {
this(new Rectangle(loc, size), in, isClient);
}
+ /**
+ * If isClient is true, the bounds represent the client window area.
+ * Otherwise, they represent the entire window area, with the insets included
+ */
public WindowDimensions(Rectangle bounds, boolean isClient) {
this(bounds, null, isClient);
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Thu Feb 26 14:25:55 2009 -0800
@@ -979,8 +979,13 @@
*/
public void handleButtonPressRelease(XEvent xev) {
XButtonEvent xbe = xev.get_xbutton();
- final int buttonState = xbe.get_state() & (XConstants.Button1Mask | XConstants.Button2Mask
- | XConstants.Button3Mask | XConstants.Button4Mask | XConstants.Button5Mask);
+ int buttonState = 0;
+ for (int i = 0; i<XToolkit.getNumMouseButtons(); i++){
+ // A bug in WM implementation: extra buttons doesn't have state!=0 as they should on Release message.
+ if ((i != 4) && (i != 5)){
+ buttonState |= (xbe.get_state() & XConstants.buttonsMask[i]);
+ }
+ }
switch (xev.get_type()) {
case XConstants.ButtonPress:
if (buttonState == 0) {
@@ -1011,19 +1016,11 @@
* Checks ButtonRelease released all Mouse buttons
*/
static boolean isFullRelease(int buttonState, int button) {
- switch (button) {
- case XConstants.Button1:
- return buttonState == XConstants.Button1Mask;
- case XConstants.Button2:
- return buttonState == XConstants.Button2Mask;
- case XConstants.Button3:
- return buttonState == XConstants.Button3Mask;
- case XConstants.Button4:
- return buttonState == XConstants.Button4Mask;
- case XConstants.Button5:
- return buttonState == XConstants.Button5Mask;
+ if (button < 0 || button > XToolkit.getNumMouseButtons()) {
+ return buttonState == 0;
+ } else {
+ return buttonState == XConstants.buttonsMask[button - 1];
}
- return buttonState == 0;
}
static boolean isGrabbedEvent(XEvent ev, XBaseWindow target) {
--- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -1534,13 +1534,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();
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XConstants.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XConstants.java Thu Feb 26 14:25:55 2009 -0800
@@ -197,12 +197,30 @@
/* button masks. Used in same manner as Key masks above. Not to be confused
with button names below. */
-
- public static final int Button1Mask = (1<<8) ;
- public static final int Button2Mask = (1<<9) ;
- public static final int Button3Mask = (1<<10) ;
- public static final int Button4Mask = (1<<11) ;
- public static final int Button5Mask = (1<<12) ;
+ public static final int [] buttonsMask = new int []{ 1<<8,
+ 1<<9,
+ 1<<10,
+ 1<<11,
+ 1<<12,
+ 1<<13,
+ 1<<14,
+ 1<<15,
+ 1<<16,
+ 1<<17,
+ 1<<18,
+ 1<<19,
+ 1<<20,
+ 1<<21,
+ 1<<22,
+ 1<<23,
+ 1<<24,
+ 1<<25,
+ 1<<26,
+ 1<<27,
+ 1<<28,
+ 1<<29,
+ 1<<30,
+ 1<<31 };
public static final int AnyModifier = (1<<15) ; /* used in GrabButton, GrabKey */
@@ -211,11 +229,7 @@
and ButtonRelease events. Not to be confused with button masks above.
Note that 0 is already defined above as "AnyButton". */
- public static final int Button1 = 1 ;
- public static final int Button2 = 2 ;
- public static final int Button3 = 3 ;
- public static final int Button4 = 4 ;
- public static final int Button5 = 5 ;
+ public static final int buttons [] = new int [] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
/* Notify modes */
--- a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -492,7 +492,14 @@
// do nothing but accept it.
Rectangle reqBounds = newDimensions.getBounds();
Rectangle newBounds = constrainBounds(reqBounds.x, reqBounds.y, reqBounds.width, reqBounds.height);
- newDimensions = new WindowDimensions(newBounds, newDimensions.getInsets(), newDimensions.isClientSizeSet());
+ Insets insets = newDimensions.getInsets();
+ // Inherit isClientSizeSet from newDimensions
+ if (newDimensions.isClientSizeSet()) {
+ newBounds = new Rectangle(newBounds.x, newBounds.y,
+ newBounds.width - insets.left - insets.right,
+ newBounds.height - insets.top - insets.bottom);
+ }
+ newDimensions = new WindowDimensions(newBounds, insets, newDimensions.isClientSizeSet());
}
XToolkit.awtLock();
try {
--- a/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -694,8 +694,8 @@
} finally {
xmotion.dispose();
}
- if (xbutton.get_button() == XConstants.Button1
- || xbutton.get_button() == XConstants.Button2) {
+ if (xbutton.get_button() == XConstants.buttons[0]
+ || xbutton.get_button() == XConstants.buttons[1]) {
// drag is initiated with Button1 or Button2 pressed and
// ended on release of either of these buttons (as the same
// behavior was with our old Motif DnD-based implementation)
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java Thu Feb 26 14:25:55 2009 -0800
@@ -31,6 +31,9 @@
import java.awt.Component;
import java.awt.Container;
+import sun.awt.X11GraphicsConfig;
+import sun.awt.X11GraphicsDevice;
+
/**
* Helper class implementing XEmbed protocol handling routines(client side)
* Window which wants to participate in a protocol should create an instance,
@@ -39,20 +42,34 @@
public class XEmbedClientHelper extends XEmbedHelper implements XEventDispatcher {
private static final Logger xembedLog = Logger.getLogger("sun.awt.X11.xembed.XEmbedClientHelper");
- private XEmbeddedFramePeer embedded;
+ private XEmbeddedFramePeer embedded; // XEmbed client
+ private long server; // XEmbed server
+
private boolean active;
- private long server;
private boolean applicationActive;
XEmbedClientHelper() {
super();
}
- void install(XEmbeddedFramePeer embedded) {
- this.embedded = embedded;
+ void setClient(XEmbeddedFramePeer client) {
+ if (xembedLog.isLoggable(Level.FINE)) {
+ xembedLog.fine("XEmbed client: " + client);
+ }
+ if (embedded != null) {
+ XToolkit.removeEventDispatcher(embedded.getWindow(), this);
+ active = false;
+ }
+ embedded = client;
+ if (embedded != null) {
+ XToolkit.addEventDispatcher(embedded.getWindow(), this);
+ }
+ }
- if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Installing xembedder on " + embedded);
- XToolkit.addEventDispatcher(embedded.getWindow(), this);
+ void install() {
+ if (xembedLog.isLoggable(Level.FINE)) {
+ xembedLog.fine("Installing xembedder on " + embedded);
+ }
long[] info = new long[] { XEMBED_VERSION, XEMBED_MAPPED };
long data = Native.card32ToData(info);
try {
@@ -155,7 +172,24 @@
}
public void handleReparentNotify(XEvent xev) {
XReparentEvent re = xev.get_xreparent();
- server = re.get_parent();
+ long newParent = re.get_parent();
+ if (active) {
+ // unregister accelerators, etc. for old parent
+ embedded.notifyStopped();
+ // check if newParent is a root window
+ X11GraphicsConfig gc = (X11GraphicsConfig)embedded.getGraphicsConfiguration();
+ X11GraphicsDevice gd = (X11GraphicsDevice)gc.getDevice();
+ if ((newParent == XlibUtil.getRootWindow(gd.getScreen())) ||
+ (newParent == XToolkit.getDefaultRootWindow()))
+ {
+ // reparenting to root means XEmbed termination
+ active = false;
+ } else {
+ // continue XEmbed with a new parent
+ server = newParent;
+ embedded.notifyStarted();
+ }
+ }
}
boolean requestFocus() {
if (active && embedded.focusAllowedFor()) {
@@ -201,12 +235,16 @@
}
void registerAccelerator(AWTKeyStroke stroke, int id) {
- long sym = getX11KeySym(stroke);
- long mods = getX11Mods(stroke);
- sendMessage(server, XEMBED_REGISTER_ACCELERATOR, id, sym, mods);
+ if (active) {
+ long sym = getX11KeySym(stroke);
+ long mods = getX11Mods(stroke);
+ sendMessage(server, XEMBED_REGISTER_ACCELERATOR, id, sym, mods);
+ }
}
void unregisterAccelerator(int id) {
- sendMessage(server, XEMBED_UNREGISTER_ACCELERATOR, id, 0, 0);
+ if (active) {
+ sendMessage(server, XEMBED_UNREGISTER_ACCELERATOR, id, 0, 0);
+ }
}
long getX11KeySym(AWTKeyStroke stroke) {
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -63,7 +63,10 @@
void postInit(XCreateWindowParams params) {
super.postInit(params);
if (embedder != null) {
- embedder.install(this);
+ // install X11 event dispatcher
+ embedder.setClient(this);
+ // reparent to XEmbed server
+ embedder.install();
} else if (getParentWindowHandle() != 0) {
XToolkit.awtLock();
try {
@@ -77,6 +80,15 @@
}
}
+ @Override
+ public void dispose() {
+ if (embedder != null) {
+ // uninstall X11 event dispatcher
+ embedder.setClient(null);
+ }
+ super.dispose();
+ }
+
public void updateMinimumSize() {
}
@@ -249,6 +261,14 @@
// XEmbed.
updateDropTarget();
}
+ void notifyStopped() {
+ if (embedder != null && embedder.isActive()) {
+ for (int i = strokes.size() - 1; i >= 0; i--) {
+ embedder.unregisterAccelerator(i);
+ }
+ }
+ }
+
long getFocusTargetWindow() {
return getWindow();
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XKeysym.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XKeysym.java Thu Feb 26 14:25:55 2009 -0800
@@ -63,6 +63,8 @@
// TODO: or not to do: add reverse lookup javakeycode2keysym,
// for robot only it seems to me. After that, we can remove lookup table
// from XWindow.c altogether.
+ // Another use for reverse lookup: query keyboard state, for some keys.
+ static Hashtable<Integer, Long> javaKeycode2KeysymHash = new Hashtable<Integer, Long>();
static long keysym_lowercase = unsafe.allocateMemory(Native.getLongSize());
static long keysym_uppercase = unsafe.allocateMemory(Native.getLongSize());
public static char convertKeysym( long ks, int state ) {
@@ -196,6 +198,10 @@
Keysym2JavaKeycode jkc = getJavaKeycode( ev );
return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode();
}
+ static long javaKeycode2Keysym( int jkey ) {
+ Long ks = javaKeycode2KeysymHash.get( jkey );
+ return (ks == null ? 0 : ks.longValue());
+ }
/**
Return keysym derived from a keycode and modifiers.
Usually an input method does this. However non-system input methods (e.g. Java IMs) do not.
@@ -1583,6 +1589,14 @@
keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciitilde), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
keysym2JavaKeycodeHash.put( Long.valueOf(XConstants.NoSymbol), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDEFINED, java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN));
+
+ /* Reverse search of keysym by keycode. */
+
+ /* Add keyboard locking codes. */
+ javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_CAPS_LOCK, XKeySymConstants.XK_Caps_Lock);
+ javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_NUM_LOCK, XKeySymConstants.XK_Num_Lock);
+ javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_SCROLL_LOCK, XKeySymConstants.XK_Scroll_Lock);
+ javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_KANA_LOCK, XKeySymConstants.XK_Kana_Lock);
};
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XRobotPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XRobotPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-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
@@ -81,11 +81,16 @@
return pixelArray;
}
+ public int getNumberOfButtons(){
+ return getNumberOfButtonsImpl();
+ }
+
private static native synchronized void setup();
private static native synchronized void mouseMoveImpl(X11GraphicsConfig xgc, int x, int y);
private static native synchronized void mousePressImpl(int buttons);
private static native synchronized void mouseReleaseImpl(int buttons);
+ private static native synchronized int getNumberOfButtonsImpl();
private static native synchronized void mouseWheelImpl(int wheelAmt);
private static native synchronized void keyPressImpl(int keycode);
--- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Thu Feb 26 14:25:55 2009 -0800
@@ -27,6 +27,7 @@
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
+import java.awt.event.KeyEvent;
import java.awt.datatransfer.Clipboard;
import java.awt.dnd.DragSource;
import java.awt.dnd.DragGestureListener;
@@ -61,6 +62,10 @@
private static Logger keyEventLog = Logger.getLogger("sun.awt.X11.kye.XToolkit");
private static final Logger backingStoreLog = Logger.getLogger("sun.awt.X11.backingStore.XToolkit");
+ //There is 400 ms is set by default on Windows and 500 by default on KDE and GNOME.
+ //We use the same hardcoded constant.
+ private final static int AWT_MULTICLICK_DEFAULT_TIME = 500;
+
static final boolean PRIMARY_LOOP = false;
static final boolean SECONDARY_LOOP = true;
@@ -74,6 +79,25 @@
// Dynamic Layout Resize client code setting
protected static boolean dynamicLayoutSetting = false;
+ //Is it allowed to generate events assigned to extra mouse buttons.
+ //Set to true by default.
+ private static boolean areExtraMouseButtonsEnabled = true;
+
+ /**
+ * Number of buttons.
+ * By default it's taken from the system. If system value does not
+ * fit into int type range, use our own MAX_BUTTONS_SUPPORT value.
+ */
+ private static int numberOfButtons = 0;
+
+ /* XFree standard mention 24 buttons as maximum:
+ * http://www.xfree86.org/current/mouse.4.html
+ * We workaround systems supporting more than 24 buttons.
+ * Otherwise, we have to use long type values as masks
+ * which leads to API change.
+ */
+ private static int MAX_BUTTONS_SUPPORT = 24;
+
/**
* True when the x settings have been loaded.
*/
@@ -273,6 +297,9 @@
arrowCursor = XlibWrapper.XCreateFontCursor(XToolkit.getDisplay(),
XCursorFontConstants.XC_arrow);
+ areExtraMouseButtonsEnabled = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons", "true"));
+ //set system property if not yet assigned
+ System.setProperty("sun.awt.enableExtraMouseButtons", ""+areExtraMouseButtonsEnabled);
} finally {
awtUnlock();
}
@@ -1080,6 +1107,19 @@
public Map mapInputMethodHighlight(InputMethodHighlight highlight) {
return XInputMethod.mapInputMethodHighlight(highlight);
}
+ @Override
+ public boolean getLockingKeyState(int key) {
+ if (! (key == KeyEvent.VK_CAPS_LOCK || key == KeyEvent.VK_NUM_LOCK ||
+ key == KeyEvent.VK_SCROLL_LOCK || key == KeyEvent.VK_KANA_LOCK)) {
+ throw new IllegalArgumentException("invalid key for Toolkit.getLockingKeyState");
+ }
+ awtLock();
+ try {
+ return getModifierState( key );
+ } finally {
+ awtUnlock();
+ }
+ }
public Clipboard getSystemClipboard() {
SecurityManager security = System.getSecurityManager();
@@ -1216,7 +1256,6 @@
String multiclick_time_query = XlibWrapper.XGetDefault(XToolkit.getDisplay(), "*", "multiClickTime");
if (multiclick_time_query != null) {
awt_multiclick_time = (int)Long.parseLong(multiclick_time_query);
- // awt_multiclick_time = XtGetMultiClickTime(awt_display);
} else {
multiclick_time_query = XlibWrapper.XGetDefault(XToolkit.getDisplay(),
"OpenWindows", "MultiClickTimeout");
@@ -1226,20 +1265,19 @@
milliseconds */
awt_multiclick_time = (int)Long.parseLong(multiclick_time_query) * 100;
} else {
- awt_multiclick_time = 200;
- // awt_multiclick_time = XtGetMultiClickTime(awt_display);
+ awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME;
}
}
} catch (NumberFormatException nf) {
- awt_multiclick_time = 200;
+ awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME;
} catch (NullPointerException npe) {
- awt_multiclick_time = 200;
+ awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME;
}
} finally {
awtUnlock();
}
if (awt_multiclick_time == 0) {
- awt_multiclick_time = 200;
+ awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME;
}
}
@@ -1383,10 +1421,15 @@
}
}
- private int getNumMouseButtons() {
+ public static int getNumMouseButtons() {
awtLock();
try {
- return XlibWrapper.XGetPointerMapping(XToolkit.getDisplay(), 0, 0);
+ if (numberOfButtons == 0) {
+ numberOfButtons = Math.min(
+ XlibWrapper.XGetPointerMapping(XToolkit.getDisplay(), 0, 0),
+ MAX_BUTTONS_SUPPORT);
+ }
+ return numberOfButtons;
} finally {
awtUnlock();
}
@@ -1542,6 +1585,66 @@
awtUnlock();
}
}
+ static boolean getModifierState( int jkc ) {
+ int iKeyMask = 0;
+ long ks = XKeysym.javaKeycode2Keysym( jkc );
+ int kc = XlibWrapper.XKeysymToKeycode(getDisplay(), ks);
+ if (kc == 0) {
+ return false;
+ }
+ awtLock();
+ try {
+ XModifierKeymap modmap = new XModifierKeymap(
+ XlibWrapper.XGetModifierMapping(getDisplay()));
+
+ int nkeys = modmap.get_max_keypermod();
+
+ long map_ptr = modmap.get_modifiermap();
+ for( int k = 0; k < 8; k++ ) {
+ for (int i = 0; i < nkeys; ++i) {
+ int keycode = Native.getUByte(map_ptr, k * nkeys + i);
+ if (keycode == 0) {
+ continue; // ignore zero keycode
+ }
+ if (kc == keycode) {
+ iKeyMask = 1 << k;
+ break;
+ }
+ }
+ if( iKeyMask != 0 ) {
+ break;
+ }
+ }
+ XlibWrapper.XFreeModifiermap(modmap.pData);
+ if (iKeyMask == 0 ) {
+ return false;
+ }
+ // Now we know to which modifier is assigned the keycode
+ // correspondent to the keysym correspondent to the java
+ // keycode. We are going to check a state of this modifier.
+ // If a modifier is a weird one, we cannot help it.
+ long window = 0;
+ try{
+ // get any application window
+ window = ((Long)(winMap.firstKey())).longValue();
+ }catch(NoSuchElementException nex) {
+ // get root window
+ window = getDefaultRootWindow();
+ }
+ boolean res = XlibWrapper.XQueryPointer(getDisplay(), window,
+ XlibWrapper.larg1, //root
+ XlibWrapper.larg2, //child
+ XlibWrapper.larg3, //root_x
+ XlibWrapper.larg4, //root_y
+ XlibWrapper.larg5, //child_x
+ XlibWrapper.larg6, //child_y
+ XlibWrapper.larg7);//mask
+ int mask = Native.getInt(XlibWrapper.larg7);
+ return ((mask & iKeyMask) != 0);
+ } finally {
+ awtUnlock();
+ }
+ }
/* Assign meaning - alt, meta, etc. - to X modifiers mod1 ... mod5.
* Only consider primary symbols on keycodes attached to modifiers.
@@ -2166,4 +2269,8 @@
}
public static native void setNoisyXErrorHandler();
+
+ public boolean areExtraMouseButtonsEnabled() throws HeadlessException {
+ return areExtraMouseButtonsEnabled;
+ }
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XWindow.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java Thu Feb 26 14:25:55 2009 -0800
@@ -553,6 +553,10 @@
}
static int getModifiers(int state, int button, int keyCode) {
+ return getModifiers(state, button, keyCode, 0, false);
+ }
+
+ static int getModifiers(int state, int button, int keyCode, int type, boolean wheel_mouse) {
int modifiers = 0;
if (((state & XConstants.ShiftMask) != 0) ^ (keyCode == KeyEvent.VK_SHIFT)) {
@@ -570,14 +574,23 @@
if (((state & XToolkit.modeSwitchMask) != 0) ^ (keyCode == KeyEvent.VK_ALT_GRAPH)) {
modifiers |= InputEvent.ALT_GRAPH_DOWN_MASK;
}
- if (((state & XConstants.Button1Mask) != 0) ^ (button == MouseEvent.BUTTON1)) {
- modifiers |= InputEvent.BUTTON1_DOWN_MASK;
- }
- if (((state & XConstants.Button2Mask) != 0) ^ (button == MouseEvent.BUTTON2)) {
- modifiers |= InputEvent.BUTTON2_DOWN_MASK;
- }
- if (((state & XConstants.Button3Mask) != 0) ^ (button == MouseEvent.BUTTON3)) {
- modifiers |= InputEvent.BUTTON3_DOWN_MASK;
+ //InputEvent.BUTTON_DOWN_MASK array is starting from BUTTON1_DOWN_MASK on index == 0.
+ // button currently reflects a real button number and starts from 1. (except NOBUTTON which is zero )
+
+ /* this is an attempt to refactor button IDs in : MouseEvent, InputEvent, XlibWrapper and XWindow.*/
+
+ //reflects a button number similar to MouseEvent.BUTTON1, 2, 3 etc.
+ for (int i = 0; i < XConstants.buttonsMask.length; i ++){
+ //modifier should be added if :
+ // 1) current button is now still in PRESSED state (means that user just pressed mouse but not released yet) or
+ // 2) if Xsystem reports that "state" represents that button was just released. This only happens on RELEASE with 1,2,3 buttons.
+ // ONLY one of these conditions should be TRUE to add that modifier.
+ if (((state & XConstants.buttonsMask[i]) != 0) != (button == XConstants.buttons[i])){
+ //exclude wheel buttons from adding their numbers as modifiers
+ if (!wheel_mouse) {
+ modifiers |= InputEvent.getMaskForButton(i+1);
+ }
+ }
}
return modifiers;
}
@@ -603,17 +616,6 @@
return res;
}
- private static int getButtonMask(long mouseButton) {
- if (mouseButton == XConstants.Button1) {
- return XConstants.Button1Mask;
- } else if (mouseButton == XConstants.Button2) {
- return XConstants.Button2Mask;
- } else if (mouseButton == XConstants.Button3) {
- return XConstants.Button3Mask;
- }
- return 0;
- }
-
/**
* Returns true if this event is disabled and shouldn't be passed to Java.
* Default implementation returns false for all events.
@@ -648,7 +650,7 @@
boolean popupTrigger = false;
int button=0;
boolean wheel_mouse = false;
- long lbutton = xbe.get_button();
+ int lbutton = xbe.get_button();
int type = xev.get_type();
when = xbe.get_time();
long jWhen = XToolkit.nowMillisUTC_offset(when);
@@ -663,7 +665,7 @@
if (type == XConstants.ButtonPress) {
//Allow this mouse button to generate CLICK event on next ButtonRelease
- mouseButtonClickAllowed |= getButtonMask(lbutton);
+ mouseButtonClickAllowed |= XConstants.buttonsMask[lbutton];
XWindow lastWindow = (lastWindowRef != null) ? ((XWindow)lastWindowRef.get()):(null);
/*
multiclick checking
@@ -693,21 +695,22 @@
}
}
- if (lbutton == XConstants.Button1)
- button = MouseEvent.BUTTON1;
- else if (lbutton == XConstants.Button2 )
- button = MouseEvent.BUTTON2;
- else if (lbutton == XConstants.Button3)
- button = MouseEvent.BUTTON3;
- else if (lbutton == XConstants.Button4) {
- button = 4;
- wheel_mouse = true;
- } else if (lbutton == XConstants.Button5) {
- button = 5;
+ button = XConstants.buttons[lbutton - 1];
+ // 4 and 5 buttons are usually considered assigned to a first wheel
+ if (lbutton == XConstants.buttons[3] ||
+ lbutton == XConstants.buttons[4]) {
wheel_mouse = true;
}
- modifiers = getModifiers(xbe.get_state(),button,0);
+ // mapping extra buttons to numbers starting from 4.
+ if ((button > XConstants.buttons[4]) && (!Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled())){
+ return;
+ }
+
+ if (button > XConstants.buttons[4]){
+ button -= 2;
+ }
+ modifiers = getModifiers(xbe.get_state(),button,0, type, wheel_mouse);
if (!wheel_mouse) {
MouseEvent me = new MouseEvent((Component)getEventSource(),
@@ -720,7 +723,7 @@
postEventToEventQueue(me);
if ((type == XConstants.ButtonRelease) &&
- ((mouseButtonClickAllowed & getButtonMask(lbutton)) != 0) ) // No up-button in the drag-state
+ ((mouseButtonClickAllowed & XConstants.buttonsMask[lbutton]) != 0) ) // No up-button in the drag-state
{
postEventToEventQueue(me = new MouseEvent((Component)getEventSource(),
MouseEvent.MOUSE_CLICKED,
@@ -750,7 +753,7 @@
/* Update the state variable AFTER the CLICKED event post. */
if (type == XConstants.ButtonRelease) {
/* Exclude this mouse button from allowed list.*/
- mouseButtonClickAllowed &= ~getButtonMask(lbutton);
+ mouseButtonClickAllowed &= ~XConstants.buttonsMask[lbutton];
}
}
@@ -761,7 +764,19 @@
return;
}
- int mouseKeyState = (xme.get_state() & (XConstants.Button1Mask | XConstants.Button2Mask | XConstants.Button3Mask));
+ int mouseKeyState = 0; //(xme.get_state() & (XConstants.buttonsMask[0] | XConstants.buttonsMask[1] | XConstants.buttonsMask[2]));
+
+ //this doesn't work for extra buttons because Xsystem is sending state==0 for every extra button event.
+ // we can't correct it in MouseEvent class as we done it with modifiers, because exact type (DRAG|MOVE)
+ // should be passed from XWindow.
+ //TODO: eliminate it with some other value obtained w/o AWTLock.
+ for (int i = 0; i < XToolkit.getNumMouseButtons(); i++){
+ // TODO : here is the bug in WM: extra buttons doesn't have state!=0 as they should.
+ if ((i != 4) && (i != 5)) {
+ mouseKeyState = mouseKeyState | (xme.get_state() & XConstants.buttonsMask[i]);
+ }
+ }
+
boolean isDragging = (mouseKeyState != 0);
int mouseEventType = 0;
--- a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -1936,7 +1936,13 @@
new Object[] {xme, isGrabbed(), containsGlobal(xme.get_x_root(), xme.get_y_root())});
}
if (isGrabbed()) {
- boolean dragging = (xme.get_state() & (XConstants.Button1Mask | XConstants.Button2Mask | XConstants.Button3Mask)) != 0;
+ boolean dragging = false;
+ for (int i = 0; i<XToolkit.getNumMouseButtons(); i++){
+ // here is the bug in WM: extra buttons doesn't have state!=0 as they should.
+ if ((i != 4) && (i != 5)){
+ dragging = dragging || ((xme.get_state() & XConstants.buttonsMask[i]) != 0);
+ }
+ }
// When window is grabbed, all events are dispatched to
// it. Retarget them to the corresponding windows (notice
// that XBaseWindow.dispatchEvent does the opposite
@@ -1990,12 +1996,12 @@
try {
grabLog.log(Level.FINER, " - Grab event target {0} (press target {1})", new Object[] {target, pressTarget});
if (xbe.get_type() == XConstants.ButtonPress
- && xbe.get_button() == XConstants.Button1)
+ && xbe.get_button() == XConstants.buttons[0])
{
// need to keep it to retarget mouse release
pressTarget = target;
} else if (xbe.get_type() == XConstants.ButtonRelease
- && xbe.get_button() == XConstants.Button1
+ && xbe.get_button() == XConstants.buttons[0]
&& pressTarget != target)
{
// during grab we do receive mouse release on different component (not on the source
--- a/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java Thu Feb 26 14:25:55 2009 -0800
@@ -485,6 +485,7 @@
static native int XdbeEndIdiom(long display);
static native int XdbeSwapBuffers(long display, long swap_info, int num_windows);
+ static native void XQueryKeymap(long display, long vector);
static native long XKeycodeToKeysym(long display, int keycode, int index);
static native int XKeysymToKeycode(long display, long keysym);
--- a/jdk/src/solaris/classes/sun/awt/X11/keysym2ucs.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/keysym2ucs.h Thu Feb 26 14:25:55 2009 -0800
@@ -101,6 +101,8 @@
tojava // TODO: or not to do: add reverse lookup javakeycode2keysym,
tojava // for robot only it seems to me. After that, we can remove lookup table
tojava // from XWindow.c altogether.
+tojava // Another use for reverse lookup: query keyboard state, for some keys.
+tojava static Hashtable<Integer, Long> javaKeycode2KeysymHash = new Hashtable<Integer, Long>();
tojava static long keysym_lowercase = unsafe.allocateMemory(Native.getLongSize());
tojava static long keysym_uppercase = unsafe.allocateMemory(Native.getLongSize());
tojava public static char convertKeysym( long ks, int state ) {
@@ -234,6 +236,10 @@
tojava Keysym2JavaKeycode jkc = getJavaKeycode( ev );
tojava return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode();
tojava }
+tojava static long javaKeycode2Keysym( int jkey ) {
+tojava Long ks = javaKeycode2KeysymHash.get( jkey );
+tojava return (ks == null ? 0 : ks.longValue());
+tojava }
tojava /**
tojava Return keysym derived from a keycode and modifiers.
tojava Usually an input method does this. However non-system input methods (e.g. Java IMs) do not.
@@ -2634,6 +2640,14 @@
tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciitilde), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
tojava
tojava keysym2JavaKeycodeHash.put( Long.valueOf(XConstants.NoSymbol), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDEFINED, java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN));
+tojava
+tojava /* Reverse search of keysym by keycode. */
+tojava
+tojava /* Add keyboard locking codes. */
+tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_CAPS_LOCK, XKeySymConstants.XK_Caps_Lock);
+tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_NUM_LOCK, XKeySymConstants.XK_Num_Lock);
+tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_SCROLL_LOCK, XKeySymConstants.XK_Scroll_Lock);
+tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_KANA_LOCK, XKeySymConstants.XK_Kana_Lock);
tojava };
tojava
tojava }
--- a/jdk/src/solaris/native/java/lang/UNIXProcess_md.c Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c Thu Feb 26 14:25:55 2009 -0800
@@ -260,6 +260,12 @@
}
static int
+isAsciiDigit(char c)
+{
+ return c >= '0' && c <= '9';
+}
+
+static int
closeDescriptors(void)
{
DIR *dp;
@@ -284,7 +290,7 @@
*/
while ((dirp = readdir64(dp)) != NULL) {
int fd;
- if (isdigit(dirp->d_name[0]) &&
+ if (isAsciiDigit(dirp->d_name[0]) &&
(fd = strtol(dirp->d_name, NULL, 10)) >= from_fd + 2)
close(fd);
}
--- a/jdk/src/solaris/native/sun/awt/awt_Robot.c Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/native/sun/awt/awt_Robot.c Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -54,6 +54,7 @@
// 2 would be more correct, however that's how Robot originally worked
// and tests start to fail if this value is changed
static int32_t num_buttons = 3;
+static jint * masks;
static int32_t isXTestAvailable() {
int32_t major_opcode, first_event, first_error;
@@ -208,6 +209,26 @@
Java_sun_awt_X11_XRobotPeer_setup (JNIEnv * env, jclass cls) {
int32_t xtestAvailable;
+// this should be called from XRobotPeer constructor
+ jclass inputEventClazz = (*env)->FindClass(env, "java/awt/event/InputEvent");
+ jmethodID getButtonDownMasksID = (*env)->GetStaticMethodID(env, inputEventClazz, "getButtonDownMasks", "()[I");
+ jintArray obj = (jintArray)(*env)->CallStaticObjectMethod(env, inputEventClazz, getButtonDownMasksID);
+ jsize len = (*env)->GetArrayLength(env, obj);
+ jint * tmp = (*env)->GetIntArrayElements(env, obj, JNI_FALSE);
+
+ masks = (jint *)malloc(sizeof(jint)*len);
+ if (masks == (jint *) NULL) {
+ JNU_ThrowOutOfMemoryError((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2), NULL);
+ goto finally;
+ }
+
+ int i;
+ for (i = 0; i < len; i++) {
+ masks[i] = tmp[i];
+ }
+ (*env)->ReleaseIntArrayElements(env, obj, tmp, 0);
+ (*env)->DeleteLocalRef(env, obj);
+
DTRACE_PRINTLN("RobotPeer: setup()");
AWT_LOCK();
@@ -221,8 +242,15 @@
}
getNumButtons();
+ finally:
+ AWT_UNLOCK();
+}
- AWT_UNLOCK();
+JNIEXPORT jint JNICALL
+Java_sun_awt_X11_XRobotPeer_getNumberOfButtonsImpl(JNIEnv *env,
+ jclass cls) {
+ // At the moment this routine being called we already should have an initialized num_buttons variable.
+ return num_buttons;
}
JNIEXPORT void JNICALL
@@ -348,52 +376,65 @@
AWT_UNLOCK();
}
+/*
+ * Function joining the code of mousePressImpl and mouseReleaseImpl
+ */
+void mouseAction(JNIEnv *env,
+ jclass cls,
+ jint buttonMask,
+ Bool isMousePress)
+{
+ AWT_LOCK();
+
+ DTRACE_PRINTLN1("RobotPeer: mouseAction(%i)", buttonMask);
+ DTRACE_PRINTLN1("RobotPeer: mouseAction, press = %d", isMousePress);
+
+ if (buttonMask & java_awt_event_InputEvent_BUTTON1_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON1_DOWN_MASK )
+ {
+ XTestFakeButtonEvent(awt_display, 1, isMousePress, CurrentTime);
+ }
+ if ((buttonMask & java_awt_event_InputEvent_BUTTON2_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON2_DOWN_MASK) &&
+ (num_buttons >= 2)) {
+ XTestFakeButtonEvent(awt_display, 2, isMousePress, CurrentTime);
+ }
+ if ((buttonMask & java_awt_event_InputEvent_BUTTON3_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON3_DOWN_MASK) &&
+ (num_buttons >= 3)) {
+ XTestFakeButtonEvent(awt_display, 3, isMousePress, CurrentTime);
+ }
+
+ if (num_buttons > 3){
+ int32_t i;
+ int32_t button = 0;
+ for (i = 3; i<num_buttons; i++){
+ if ((buttonMask & masks[i])) {
+ // arrays starts from zero index => +1
+ // users wants to affect 4 or 5 button but they are assigned
+ // to the wheel so => we have to shift it to the right by 2.
+ button = i + 3;
+ XTestFakeButtonEvent(awt_display, button, isMousePress, CurrentTime);
+ }
+ }
+ }
+
+ XSync(awt_display, False);
+ AWT_UNLOCK();
+}
+
JNIEXPORT void JNICALL
Java_sun_awt_X11_XRobotPeer_mousePressImpl (JNIEnv *env,
jclass cls,
jint buttonMask) {
- AWT_LOCK();
-
- DTRACE_PRINTLN1("RobotPeer: mousePressImpl(%i)", buttonMask);
-
- if (buttonMask & java_awt_event_InputEvent_BUTTON1_MASK) {
- XTestFakeButtonEvent(awt_display, 1, True, CurrentTime);
- }
- if ((buttonMask & java_awt_event_InputEvent_BUTTON2_MASK) &&
- (num_buttons >= 2)) {
- XTestFakeButtonEvent(awt_display, 2, True, CurrentTime);
- }
- if ((buttonMask & java_awt_event_InputEvent_BUTTON3_MASK) &&
- (num_buttons >= 3)) {
- XTestFakeButtonEvent(awt_display, 3, True, CurrentTime);
- }
- XSync(awt_display, False);
-
- AWT_UNLOCK();
+ mouseAction(env, cls, buttonMask, True);
}
JNIEXPORT void JNICALL
Java_sun_awt_X11_XRobotPeer_mouseReleaseImpl (JNIEnv *env,
jclass cls,
jint buttonMask) {
- AWT_LOCK();
-
- DTRACE_PRINTLN1("RobotPeer: mouseReleaseImpl(%i)", buttonMask);
-
- if (buttonMask & java_awt_event_InputEvent_BUTTON1_MASK) {
- XTestFakeButtonEvent(awt_display, 1, False, CurrentTime);
- }
- if ((buttonMask & java_awt_event_InputEvent_BUTTON2_MASK) &&
- (num_buttons >= 2)) {
- XTestFakeButtonEvent(awt_display, 2, False, CurrentTime);
- }
- if ((buttonMask & java_awt_event_InputEvent_BUTTON3_MASK) &&
- (num_buttons >= 3)) {
- XTestFakeButtonEvent(awt_display, 3, False, CurrentTime);
- }
- XSync(awt_display, False);
-
- AWT_UNLOCK();
+ mouseAction(env, cls, buttonMask, False);
}
JNIEXPORT void JNICALL
--- a/jdk/src/solaris/native/sun/xawt/XlibWrapper.c Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/solaris/native/sun/xawt/XlibWrapper.c Thu Feb 26 14:25:55 2009 -0800
@@ -1641,6 +1641,13 @@
AWT_CHECK_HAVE_LOCK();
return XdbeSwapBuffers((Display*) jlong_to_ptr(display), (XdbeSwapInfo *) jlong_to_ptr(swap_info), num_windows);
}
+JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XQueryKeymap
+(JNIEnv *env, jclass clazz, jlong display, jlong vector)
+{
+
+ AWT_CHECK_HAVE_LOCK();
+ XQueryKeymap( (Display *) jlong_to_ptr(display), (char *) jlong_to_ptr(vector));
+}
JNIEXPORT jlong JNICALL
Java_sun_awt_X11_XlibWrapper_XKeycodeToKeysym(JNIEnv *env, jclass clazz,
@@ -1911,19 +1918,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;
- XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
+ int numrects = RegionToYXBandedRectangles(env, x1, y1, x2, y2, region,
+ &pRect, 256);
+
+ 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);
}
}
--- a/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -68,13 +68,6 @@
private static final Logger log = Logger.getLogger("sun.awt.windows.WComponentPeer");
private static final Logger shapeLog = Logger.getLogger("sun.awt.windows.shape.WComponentPeer");
- static {
- wheelInit();
- }
-
- // Only actually does stuff if running on 95
- native static void wheelInit();
-
// ComponentPeer implementation
SurfaceData surfaceData;
@@ -964,8 +957,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);
+ }
}
}
--- a/jdk/src/windows/classes/sun/awt/windows/WInputMethod.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WInputMethod.java Thu Feb 26 14:25:55 2009 -0800
@@ -548,11 +548,15 @@
public void inquireCandidatePosition()
{
+ Component source = getClientComponent();
+ if (source == null) {
+ return;
+ }
// This call should return immediately just to cause
// InputMethodRequests.getTextLocation be called within
// AWT Event thread. Otherwise, a potential deadlock
// could happen.
- java.awt.EventQueue.invokeLater(new Runnable() {
+ Runnable r = new Runnable() {
public void run() {
int x = 0;
int y = 0;
@@ -573,7 +577,9 @@
openCandidateWindow(awtFocussedComponentPeer, x, y);
}
- });
+ };
+ WToolkit.postEvent(WToolkit.targetToAppContext(source),
+ new InvocationEvent(source, r));
}
// java.awt.Toolkit#getNativeContainer() is not available
--- a/jdk/src/windows/classes/sun/awt/windows/WRobotPeer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WRobotPeer.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-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
@@ -60,6 +60,8 @@
}
public native int getRGBPixelImpl(int x, int y);
+ public native int getNumberOfButtons();
+
public int [] getRGBPixels(Rectangle bounds) {
int pixelArray[] = new int[bounds.width*bounds.height];
getRGBPixels(bounds.x, bounds.y, bounds.width, bounds.height, pixelArray);
--- a/jdk/src/windows/classes/sun/awt/windows/WToolkit.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WToolkit.java Thu Feb 26 14:25:55 2009 -0800
@@ -80,6 +80,10 @@
// Dynamic Layout Resize client code setting
protected boolean dynamicLayoutSetting = false;
+ //Is it allowed to generate events assigned to extra mouse buttons.
+ //Set to true by default.
+ private static boolean areExtraMouseButtonsEnabled = true;
+
/**
* Initialize JNI field and method IDs
*/
@@ -249,6 +253,11 @@
// Enabled "live resizing" by default. It remains controlled
// by the native system though.
setDynamicLayout(true);
+
+ areExtraMouseButtonsEnabled = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons", "true"));
+ //set system property if not yet assigned
+ System.setProperty("sun.awt.enableExtraMouseButtons", ""+areExtraMouseButtonsEnabled);
+ setExtraMouseButtonsEnabledNative(areExtraMouseButtonsEnabled);
}
public void run() {
@@ -961,4 +970,9 @@
return new WDesktopPeer();
}
+ public static native void setExtraMouseButtonsEnabledNative(boolean enable);
+
+ public boolean areExtraMouseButtonsEnabled() throws HeadlessException {
+ return areExtraMouseButtonsEnabled;
+ }
}
--- a/jdk/src/windows/native/sun/awt/splashscreen/splashscreen_sys.c Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/awt/splashscreen/splashscreen_sys.c Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-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
@@ -23,24 +23,21 @@
* have any questions.
*/
+// copy from awt.h
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#endif
+
+// copy from awt.h
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0600
+#endif
+
#include "splashscreen_impl.h"
#include <windowsx.h>
#include <windows.h>
#include <winuser.h>
-/* layered windows api prototypes. wouldn't be needed if we could use an updated version of the MS PSDK. */
-
-typedef BOOL WINAPI UpdateLayeredWindowT(HWND hwnd, // handle to layered window
- HDC hdcDst, // handle to screen DC
- POINT * pptDst, // new screen position
- SIZE * psize, // new size of the layered window
- HDC hdcSrc, // handle to surface DC
- POINT * pptSrc, // layer position
- COLORREF crKey, // color key
- BLENDFUNCTION * pblend, // blend function
- DWORD dwFlags // options
- );
-
#ifndef WS_EX_LAYERED
#define WS_EX_LAYERED 0x80000
#endif
@@ -57,21 +54,6 @@
#define AC_SRC_ALPHA 0x01
#endif
-static UpdateLayeredWindowT *UpdateLayeredWindow = NULL;
-
-/* Get/SetWindowLongPtr prototypes, for the case we're compiling with old headers for a 32-bit platform
- copied from Component.cpp
- FIXME: remove this as soon as the build process is using up-to-date headers */
-#if !defined(__int3264)
-#define GetWindowLongPtr GetWindowLong
-#define SetWindowLongPtr SetWindowLong
-#define GWLP_USERDATA GWL_USERDATA
-#define GWLP_WNDPROC GWL_WNDPROC
-typedef __int32 LONG_PTR;
-typedef unsigned __int32 ULONG_PTR;
-#endif // __int3264
-
-
#define WM_SPLASHUPDATE WM_USER+1
#define WM_SPLASHRECONFIGURE WM_USER+2
@@ -436,16 +418,11 @@
void
SplashInitPlatform(Splash * splash)
{
- HMODULE user32 = LoadLibrary("user32.dll");
HDC hdc;
int paletteMode;
InitializeCriticalSection(&splash->lock);
splash->isLayered = FALSE;
- if (user32) {
- UpdateLayeredWindow = (UpdateLayeredWindowT *)
- GetProcAddress(user32, "UpdateLayeredWindow");
- }
hdc = GetDC(NULL);
paletteMode = (GetDeviceCaps(hdc, RASTERCAPS) & RC_PALETTE) != 0;
if (UpdateLayeredWindow && !paletteMode) {
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -184,7 +184,7 @@
pMgr = D3DPipelineManager::GetInstance();
RETURN_IF_NULL(pMgr);
hMon = pMgr->pd3d9->GetAdapterMonitor(adapter);
- gdiScreen = AwtWin32GraphicsDevice::GetScreenFromMHND((MHND)hMon);
+ gdiScreen = AwtWin32GraphicsDevice::GetScreenFromHMONITOR(hMon);
JNU_CallStaticMethodByName(env, NULL,
"sun/java2d/pipe/hw/AccelDeviceEventNotifier",
@@ -194,21 +194,21 @@
UINT D3DPipelineManager::GetAdapterOrdinalForScreen(jint gdiScreen)
{
- MHND mHnd = AwtWin32GraphicsDevice::GetMonitor(gdiScreen);
- if (mHnd == (MHND)0) {
+ HMONITOR mHnd = AwtWin32GraphicsDevice::GetMonitor(gdiScreen);
+ if (mHnd == (HMONITOR)0) {
return D3DADAPTER_DEFAULT;
}
return GetAdapterOrdinalByHmon((HMONITOR)mHnd);
}
// static
-HRESULT D3DPipelineManager::HandleAdaptersChange(HMONITOR *pMHNDs, UINT monNum)
+HRESULT D3DPipelineManager::HandleAdaptersChange(HMONITOR *pHMONITORs, UINT monNum)
{
HRESULT res = S_OK;
BOOL bResetD3D = FALSE, bFound;
D3DPipelineManager *pMgr = D3DPipelineManager::GetInstance();
- RETURN_STATUS_IF_NULL(pMHNDs, E_FAIL);
+ RETURN_STATUS_IF_NULL(pHMONITORs, E_FAIL);
if (pMgr == NULL) {
// NULL pMgr is valid when the pipeline is not enabled or if it hasn't
// been created yet
@@ -234,7 +234,7 @@
}
bFound = FALSE;
for (UINT mon = 0; mon < monNum; mon++) {
- if (pMHNDs[mon] == hMon) {
+ if (pHMONITORs[mon] == hMon) {
J2dTraceLn3(J2D_TRACE_VERBOSE,
" adapter %d: found hmnd[%d]=0x%x", i, mon, hMon);
bFound = TRUE;
@@ -364,8 +364,8 @@
HRESULT
D3DPipelineManager::GDICheckForBadHardware()
{
- _DISPLAY_DEVICE dd;
- dd.dwSize = sizeof(DISPLAY_DEVICE);
+ DISPLAY_DEVICE dd;
+ dd.cb = sizeof(DISPLAY_DEVICE);
int failedDevices = 0;
int attachedDevices = 0;
@@ -379,9 +379,9 @@
// i<20 is to guard against buggy drivers
while (EnumDisplayDevices(NULL, i, &dd, 0) && i < 20) {
- if (dd.dwFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) {
+ if (dd.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) {
attachedDevices++;
- id = dd.deviceID;
+ id = dd.DeviceID;
if (wcslen(id) > 21) {
// get vendor ID
wcsncpy(vendorId, id+8, 4);
@@ -796,7 +796,7 @@
ZeroMemory(&mi, sizeof(MONITORINFO));
mi.cbSize = sizeof(MONITORINFO);
HMONITOR hMon = pd3d9->GetAdapterMonitor(adapterOrdinal);
- if (hMon == 0 || !GetMonitorInfo(hMon, (PMONITOR_INFO)&mi)) {
+ if (hMon == 0 || !GetMonitorInfo(hMon, (LPMONITORINFO)&mi)) {
J2dRlsTraceLn1(J2D_TRACE_ERROR,
"D3DPPLM::CreateDefaultFocusWindow: "\
"error getting monitor info for adapter=%d", adapterOrdinal);
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,8 +23,8 @@
* have any questions.
*/
+#include "D3DPipeline.h"
#include <malloc.h>
-#include <jni.h>
#include "sun_java2d_pipe_BufferedOpCodes.h"
#include "jlong.h"
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,6 +23,8 @@
* have any questions.
*/
+#include "D3DPipeline.h"
+
#include "sun_java2d_d3d_D3DRenderer.h"
#include "D3DContext.h"
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,8 +23,7 @@
* have any questions.
*/
-#include <jni.h>
-#include <jni_util.h>
+#include "D3DPipeline.h"
#include <jlong.h>
#include "D3DSurfaceData.h"
#include "D3DPipelineManager.h"
--- a/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include <sun_java2d_windows_GDIBlitLoops.h>
#include "gdefs.h"
#include "Trace.h"
--- a/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include "sun_java2d_windows_GDIRenderer.h"
#include "java_awt_geom_PathIterator.h"
@@ -31,11 +32,8 @@
#include "awt_Pen.h"
#include "awt_Brush.h"
-#include "jni.h"
-
#include "GraphicsPrimitiveMgr.h"
-#include <windows.h>
#include <math.h> /* for cos(), sin(), etc */
#define MAX_CLAMP_BND (1<<26)
--- a/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -246,7 +246,7 @@
}
if( numScreens > 1 ) {
- MONITOR_INFO *miInfo;
+ LPMONITORINFO miInfo;
RECT rSect ={0,0,0,0};
RECT rView ={bounds->x1, bounds->y1, bounds->x2, bounds->y2};
retCode = FALSE;
@@ -258,7 +258,7 @@
::OffsetRect(&rView,
(ptOrig.x), (ptOrig.y));
- ::IntersectRect(&rSect,&rView,&(miInfo->rMonitor));
+ ::IntersectRect(&rSect,&rView,&(miInfo->rcMonitor));
if( FALSE == ::IsRectEmpty(&rSect) ) {
if( TRUE == ::EqualRect(&rSect,&rView) ) {
--- a/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,8 +23,6 @@
* have any questions.
*/
-
-#include <jni.h>
#include <awt.h>
#include "Trace.h"
#include "WindowsFlags.h"
--- a/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,54 +23,26 @@
* have any questions.
*/
+#include "awt.h"
#include "ComCtl32Util.h"
ComCtl32Util::ComCtl32Util() {
- hModComCtl32 = NULL;
- m_bNewSubclassing = FALSE;
-
- m_lpfnSetWindowSubclass = NULL;
- m_lpfnRemoveWindowSubclass = NULL;
- m_lpfnDefSubclassProc = NULL;
}
ComCtl32Util::~ComCtl32Util() {
- DASSERT(hModComCtl32 == NULL);
}
void ComCtl32Util::InitLibraries() {
- if (hModComCtl32 == NULL) {
- hModComCtl32 = ::LoadLibrary(TEXT("comctl32.dll"));
- if (hModComCtl32 != NULL) {
- m_lpfnSetWindowSubclass = (PFNSETWINDOWSUBCLASS)::GetProcAddress(hModComCtl32, "SetWindowSubclass");
- m_lpfnRemoveWindowSubclass = (PFNREMOVEWINDOWSUBCLASS)::GetProcAddress(hModComCtl32, "RemoveWindowSubclass");
- m_lpfnDefSubclassProc = (PFNDEFSUBCLASSPROC)::GetProcAddress(hModComCtl32, "DefSubclassProc");
-
- m_bNewSubclassing = (m_lpfnSetWindowSubclass != NULL) &&
- (m_lpfnRemoveWindowSubclass != NULL) &&
- (m_lpfnDefSubclassProc != NULL);
-
- fn_InitCommonControlsEx = (ComCtl32Util::InitCommonControlsExType)::GetProcAddress(hModComCtl32, "InitCommonControlsEx");
- InitCommonControls();
- }
- }
-}
-
-void ComCtl32Util::FreeLibraries() {
- if (hModComCtl32 != NULL) {
- m_lpfnSetWindowSubclass = NULL;
- m_lpfnRemoveWindowSubclass = NULL;
- m_lpfnDefSubclassProc = NULL;
- ::FreeLibrary(hModComCtl32);
- hModComCtl32 = NULL;
- }
+ INITCOMMONCONTROLSEX iccex;
+ memset(&iccex, 0, sizeof(INITCOMMONCONTROLSEX));
+ iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
+ ::InitCommonControlsEx(&iccex);
}
WNDPROC ComCtl32Util::SubclassHWND(HWND hwnd, WNDPROC _WindowProc) {
- if (m_bNewSubclassing) {
- DASSERT(hModComCtl32 != NULL);
+ if (IS_WINXP) {
const SUBCLASSPROC p = SharedWindowProc; // let compiler check type of SharedWindowProc
- m_lpfnSetWindowSubclass(hwnd, p, (UINT_PTR)_WindowProc, NULL); // _WindowProc is used as subclass ID
+ ::SetWindowSubclass(hwnd, p, (UINT_PTR)_WindowProc, NULL); // _WindowProc is used as subclass ID
return NULL;
} else {
return (WNDPROC)::SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)_WindowProc);
@@ -78,21 +50,17 @@
}
void ComCtl32Util::UnsubclassHWND(HWND hwnd, WNDPROC _WindowProc, WNDPROC _DefWindowProc) {
- if (m_bNewSubclassing) {
- DASSERT(hModComCtl32 != NULL);
- DASSERT(_DefWindowProc == NULL);
+ if (IS_WINXP) {
const SUBCLASSPROC p = SharedWindowProc; // let compiler check type of SharedWindowProc
- m_lpfnRemoveWindowSubclass(hwnd, p, (UINT_PTR)_WindowProc); // _WindowProc is used as subclass ID
+ ::RemoveWindowSubclass(hwnd, p, (UINT_PTR)_WindowProc); // _WindowProc is used as subclass ID
} else {
::SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)_DefWindowProc);
}
}
LRESULT ComCtl32Util::DefWindowProc(WNDPROC _DefWindowProc, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
- if (m_bNewSubclassing) {
- DASSERT(hModComCtl32 != NULL);
- DASSERT(_DefWindowProc == NULL);
- return m_lpfnDefSubclassProc(hwnd, msg, wParam, lParam);
+ if (IS_WINXP) {
+ return ::DefSubclassProc(hwnd, msg, wParam, lParam);
} else if (_DefWindowProc != NULL) {
return ::CallWindowProc(_DefWindowProc, hwnd, msg, wParam, lParam);
} else {
@@ -111,15 +79,3 @@
CATCH_BAD_ALLOC_RET(0);
}
-
-void ComCtl32Util::InitCommonControls()
-{
- if (fn_InitCommonControlsEx == NULL) {
- return;
- }
-
- INITCOMMONCONTROLSEX iccex;
- memset(&iccex, 0, sizeof(INITCOMMONCONTROLSEX));
- iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
- fn_InitCommonControlsEx(&iccex);
-}
--- a/jdk/src/windows/native/sun/windows/ComCtl32Util.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/ComCtl32Util.h Thu Feb 26 14:25:55 2009 -0800
@@ -30,20 +30,6 @@
#ifndef _COMCTL32UTIL_H
#define _COMCTL32UTIL_H
-
-/*
- * comctl32.dll version 6 subclassing - taken from PlatformSDK/Include/commctrl.h
- */
-typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND hWnd, UINT uMsg, WPARAM wParam, \
- LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData);
-
-typedef BOOL (WINAPI *PFNSETWINDOWSUBCLASS)(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, \
- DWORD_PTR dwRefData);
-typedef BOOL (WINAPI *PFNREMOVEWINDOWSUBCLASS)(HWND hWnd, SUBCLASSPROC pfnSubclass, \
- UINT_PTR uIdSubclass);
-
-typedef LRESULT (WINAPI *PFNDEFSUBCLASSPROC)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
class ComCtl32Util
{
public:
@@ -52,21 +38,8 @@
return theInstance;
}
- // loads comctl32.dll and checks if required routines are available
- // called from AwtToolkit::AwtToolkit()
void InitLibraries();
- // unloads comctl32.dll
- // called from AwtToolkit::Dispose()
- void FreeLibraries();
- //-- comctl32.dll version 6 subclassing API --//
-
- INLINE BOOL IsNewSubclassing() {
- return m_bNewSubclassing;
- }
-
- // if comctl32.dll version 6 is used returns NULL, otherwise
- // returns default window proc
WNDPROC SubclassHWND(HWND hwnd, WNDPROC _WindowProc);
// DefWindowProc is the same as returned from SubclassHWND
void UnsubclassHWND(HWND hwnd, WNDPROC _WindowProc, WNDPROC _DefWindowProc);
@@ -77,19 +50,6 @@
ComCtl32Util();
~ComCtl32Util();
- HMODULE hModComCtl32;
-
- PFNSETWINDOWSUBCLASS m_lpfnSetWindowSubclass;
- PFNREMOVEWINDOWSUBCLASS m_lpfnRemoveWindowSubclass;
- PFNDEFSUBCLASSPROC m_lpfnDefSubclassProc;
-
- typedef BOOL (WINAPI * InitCommonControlsExType)(const LPINITCOMMONCONTROLSEX lpInitCtrls);
- InitCommonControlsExType fn_InitCommonControlsEx;
-
- void InitCommonControls();
-
- BOOL m_bNewSubclassing;
-
// comctl32.dll version 6 window proc
static LRESULT CALLBACK SharedWindowProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam,
--- a/jdk/src/windows/native/sun/windows/Devices.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/Devices.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -83,9 +83,83 @@
#include "Devices.h"
#include "Trace.h"
-#include "awt_Multimon.h"
#include "D3DPipelineManager.h"
+
+/* Some helper functions (from awt_MMStub.h/cpp) */
+
+int g_nMonitorCounter;
+int g_nMonitorLimit;
+HMONITOR* g_hmpMonitors;
+
+// Callback for CountMonitors below
+BOOL WINAPI clb_fCountMonitors(HMONITOR hMon, HDC hDC, LPRECT rRect, LPARAM lP)
+{
+ g_nMonitorCounter ++;
+ return TRUE;
+}
+
+int WINAPI CountMonitors(void)
+{
+ g_nMonitorCounter = 0;
+ ::EnumDisplayMonitors(NULL, NULL, clb_fCountMonitors, 0L);
+ return g_nMonitorCounter;
+
+}
+
+// Callback for CollectMonitors below
+BOOL WINAPI clb_fCollectMonitors(HMONITOR hMon, HDC hDC, LPRECT rRect, LPARAM lP)
+{
+
+ if ((g_nMonitorCounter < g_nMonitorLimit) && (NULL != g_hmpMonitors)) {
+ g_hmpMonitors[g_nMonitorCounter] = hMon;
+ g_nMonitorCounter ++;
+ }
+
+ return TRUE;
+}
+
+int WINAPI CollectMonitors(HMONITOR* hmpMonitors, int nNum)
+{
+ int retCode = 0;
+
+ if (NULL != hmpMonitors) {
+
+ g_nMonitorCounter = 0;
+ g_nMonitorLimit = nNum;
+ g_hmpMonitors = hmpMonitors;
+
+ ::EnumDisplayMonitors(NULL, NULL, clb_fCollectMonitors, 0L);
+
+ retCode = g_nMonitorCounter;
+
+ g_nMonitorCounter = 0;
+ g_nMonitorLimit = 0;
+ g_hmpMonitors = NULL;
+
+ }
+ return retCode;
+}
+
+BOOL WINAPI MonitorBounds(HMONITOR hmMonitor, RECT* rpBounds)
+{
+ BOOL retCode = FALSE;
+
+ if ((NULL != hmMonitor) && (NULL != rpBounds)) {
+ MONITORINFOEX miInfo;
+
+ memset((void*)(&miInfo), 0, sizeof(MONITORINFOEX));
+ miInfo.cbSize = sizeof(MONITORINFOEX);
+
+ if (TRUE == (retCode = ::GetMonitorInfo(hmMonitor, &miInfo))) {
+ (*rpBounds) = miInfo.rcMonitor;
+ }
+ }
+ return retCode;
+}
+
+/* End of helper functions */
+
Devices* Devices::theInstance = NULL;
CriticalSection Devices::arrayLock;
@@ -113,9 +187,9 @@
{
J2dTraceLn(J2D_TRACE_INFO, "Devices::UpdateInstance");
- int numScreens = ::CountMonitors();
- MHND *monHds = (MHND *)safe_Malloc(numScreens * sizeof(MHND));
- if (numScreens != ::CollectMonitors(monHds, numScreens)) {
+ int numScreens = CountMonitors();
+ HMONITOR *monHds = (HMONITOR *)safe_Malloc(numScreens * sizeof(HMONITOR));
+ if (numScreens != CollectMonitors(monHds, numScreens)) {
J2dRlsTraceLn(J2D_TRACE_ERROR,
"Devices::UpdateInstance: Failed to get all "\
"monitor handles.");
--- a/jdk/src/windows/native/sun/windows/Devices.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/Devices.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-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
@@ -70,4 +70,8 @@
};
+// Some helper functions (from awt_MMStub.h/cpp)
+
+BOOL WINAPI MonitorBounds (HMONITOR, RECT*);
+
#endif _DEVICES_H_
--- a/jdk/src/windows/native/sun/windows/GDIHashtable.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/GDIHashtable.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -25,7 +25,6 @@
#include "GDIHashtable.h"
#include "awt_GDIObject.h"
-#include "awt_dlls.h"
GDIHashtable::BatchDestructionManager GDIHashtable::manager;
@@ -46,7 +45,6 @@
DASSERT(value != NULL);
m_deleteProc(value);
}
- manager.update();
}
void GDIHashtable::flush() {
@@ -128,9 +126,6 @@
}
}
-#undef GFSR_GDIRESOURCES
-#define GFSR_GDIRESOURCES 0x0001
-
GDIHashtable::BatchDestructionManager::BatchDestructionManager(UINT nFirstThreshold,
UINT nSecondThreshold,
UINT nDestroyPeriod) :
@@ -138,48 +133,6 @@
m_nSecondThreshold(nSecondThreshold),
m_nDestroyPeriod(nDestroyPeriod),
m_nCounter(0),
- m_bBatchingEnabled(TRUE) {
- load_rsrc32_procs();
+ m_bBatchingEnabled(TRUE)
+{
}
-
-void GDIHashtable::BatchDestructionManager::update() {
-
- if (get_free_system_resources != NULL) {
-
- CriticalSection::Lock l(m_managerLock);
-
- if (m_nCounter < 0) {
- UINT nFreeResources = (*get_free_system_resources)(GFSR_GDIRESOURCES);
- /*
- * If m_bBatchingEnabled is FALSE there is no need
- * to flush since we have been destroying all
- * GDI resources as soon as they were released.
- */
- if (m_bBatchingEnabled) {
- if (nFreeResources < m_nFirstThreshold) {
- flushAll();
- nFreeResources = (*get_free_system_resources)(GFSR_GDIRESOURCES);
- }
- }
- if (nFreeResources < m_nSecondThreshold) {
- m_bBatchingEnabled = FALSE;
- m_nCounter = m_nDestroyPeriod;
- } else {
- m_bBatchingEnabled = TRUE;
- /*
- * The frequency of checks must depend on the currect amount
- * of free space in GDI heaps. Otherwise we can run into the
- * Resource Meter warning dialog when GDI resources are low.
- * This is a heuristic rule that provides this dependency.
- * These numbers have been chosen because:
- * Resource Meter posts a warning dialog when less than 10%
- * of GDI resources are free.
- * 5 pens/brushes take 1%. So 3 is the upper bound.
- * When changing this rule you should check that performance
- * isn't affected (with Caffeine Mark and JMark).
- */
- m_nCounter = (nFreeResources - 10) * 3;
- }
- }
- }
-}
--- a/jdk/src/windows/native/sun/windows/GDIHashtable.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/GDIHashtable.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -151,12 +151,6 @@
*/
INLINE void decrementCounter() { m_nCounter--; }
- /**
- * Depending on the amount of free space in GDI heaps flushes
- * all GDIHashtables and sets the initial counter value.
- */
- void update();
-
INLINE CriticalSection& getLock() { return m_managerLock; }
};
--- a/jdk/src/windows/native/sun/windows/ShellFolder2.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/ShellFolder2.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-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
@@ -31,17 +31,27 @@
// This file should stand independent of AWT and should ultimately be
// put into its own DLL.
#include <awt.h>
-#endif
+#else
+// Include jni_util.h first, so JNU_* macros can be redefined
+#include "jni_util.h"
+// Borrow some macros from awt.h
+#define JNU_NewStringPlatform(env, x) env->NewString(reinterpret_cast<jchar*>(x), static_cast<jsize>(_tcslen(x)))
+#define JNU_GetStringPlatformChars(env, x, y) reinterpret_cast<LPCWSTR>(env->GetStringChars(x, y))
+#define JNU_ReleaseStringPlatformChars(env, x, y) env->ReleaseStringChars(x, reinterpret_cast<const jchar*>(y))
+#endif // DEBUG
#include <windows.h>
#include <shlobj.h>
#include <shellapi.h>
-#include "jni_util.h"
#include "jlong.h"
#include "alloc.h"
#include "stdhdrs.h"
-#include "UnicowsLoader.h"
+
+// Copy from shlguid.h which is no longer in PlatformSDK
+#ifndef DEFINE_SHLGUID
+#define DEFINE_SHLGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0, 0, 0, 0, 0, 0, 0, 0x46)
+#endif
// {93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}
DEFINE_GUID(IID_IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3, 0xe, 0x0, 0xc0, 0x4f, 0x79, 0xab, 0xd1);
@@ -86,13 +96,15 @@
static IMalloc* pMalloc;
static IShellFolder* pDesktop;
-static BOOL isXP;
-
-// copied from awt.h, because it is not included in release
-#if defined (WIN32)
- #define IS_WINVISTA (!(::GetVersion() & 0x80000000) && LOBYTE(LOWORD(::GetVersion())) >= 6)
-#else
- #define IS_WINVISTA FALSE
+// Some macros from awt.h, because it is not included in release
+#ifndef IS_WIN2000
+#define IS_WIN2000 (LOBYTE(LOWORD(::GetVersion())) >= 5)
+#endif
+#ifndef IS_WINXP
+#define IS_WINXP ((IS_WIN2000 && HIBYTE(LOWORD(::GetVersion())) >= 1) || LOBYTE(LOWORD(::GetVersion())) > 5)
+#endif
+#ifndef IS_WINVISTA
+#define IS_WINVISTA (!(::GetVersion() & 0x80000000) && LOBYTE(LOWORD(::GetVersion())) >= 6)
#endif
@@ -103,7 +115,6 @@
static HMODULE libShell32 = NULL;
static HMODULE libUser32 = NULL;
static HMODULE libComCtl32 = NULL;
- static HMODULE libUnicows = UnicowsLoader::GetModuleHandle();
// If already initialized, return TRUE
if (libShell32 != NULL && libUser32 != NULL) {
return TRUE;
@@ -130,7 +141,7 @@
// Set up procs - libShell32
fn_FindExecutable = (FindExecutableType)GetProcAddress(
- (libUnicows ? libUnicows : libShell32), "FindExecutableW");
+ libShell32, "FindExecutableW");
if (fn_FindExecutable == NULL) {
return FALSE;
}
@@ -140,7 +151,7 @@
return FALSE;
}
fn_SHGetFileInfo = (SHGetFileInfoType)GetProcAddress(
- (libUnicows ? libUnicows : libShell32), "SHGetFileInfoW");
+ libShell32, "SHGetFileInfoW");
if (fn_SHGetFileInfo == NULL) {
return FALSE;
}
@@ -154,7 +165,7 @@
return FALSE;
}
fn_SHGetPathFromIDList = (SHGetPathFromIDListType)GetProcAddress(
- (libUnicows ? libUnicows : libShell32), "SHGetPathFromIDListW");
+ libShell32, "SHGetPathFromIDListW");
if (fn_SHGetPathFromIDList == NULL) {
return FALSE;
}
@@ -181,19 +192,19 @@
static jstring jstringFromSTRRET(JNIEnv* env, LPITEMIDLIST pidl, STRRET* pStrret) {
switch (pStrret->uType) {
case STRRET_CSTR :
- return JNU_NewStringPlatform(env, pStrret->cStr);
+ return JNU_NewStringPlatform(env, reinterpret_cast<const char*>(pStrret->cStr));
case STRRET_OFFSET :
// Note : this may need to be WCHAR instead
return JNU_NewStringPlatform(env,
(CHAR*)pidl + pStrret->uOffset);
case STRRET_WSTR :
- return env->NewString(pStrret->pOleStr,
+ return env->NewString(reinterpret_cast<const jchar*>(pStrret->pOleStr),
static_cast<jsize>(wcslen(pStrret->pOleStr)));
}
return NULL;
}
// restoring the original definition
-#define JNU_NewStringPlatform(env, x) env->NewString(x, static_cast<jsize>(_tcslen(x)))
+#define JNU_NewStringPlatform(env, x) env->NewString(reinterpret_cast<jchar*>(x), static_cast<jsize>(_tcslen(x)))
/*
* Class: sun_awt_shell_Win32ShellFolder2
@@ -212,13 +223,6 @@
MID_relativePIDL = env->GetMethodID(cls, "setRelativePIDL", "(J)V");
FID_displayName = env->GetFieldID(cls, "displayName", "Ljava/lang/String;");
FID_folderType = env->GetFieldID(cls, "folderType", "Ljava/lang/String;");
-
- // Find out if we are on XP or later
- long version = GetVersion();
- isXP = (!(version & 0x80000000) &&
- (LOBYTE(LOWORD(version)) == 5 &&
- HIBYTE(LOWORD(version)) >= 1) ||
- LOBYTE(LOWORD(version)) > 5);
}
static IShellIcon* getIShellIcon(IShellFolder* pIShellFolder) {
@@ -669,46 +673,24 @@
if (!CoInit(doCoUninit)) {
return 0;
}
- if (IS_NT) {
- IShellLinkW* psl;
- hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (LPVOID *)&psl);
+ IShellLinkW* psl;
+ hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (LPVOID *)&psl);
+ if (SUCCEEDED(hres)) {
+ IPersistFile* ppf;
+ hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
if (SUCCEEDED(hres)) {
- IPersistFile* ppf;
- hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
+ hres = ppf->Load(wstr, STGM_READ);
if (SUCCEEDED(hres)) {
- hres = ppf->Load(wstr, STGM_READ);
- if (SUCCEEDED(hres)) {
- if (resolve) {
- hres = psl->Resolve(NULL, 0);
- // Ignore failure
- }
- pidl = (LPITEMIDLIST)NULL;
- hres = psl->GetIDList(&pidl);
+ if (resolve) {
+ hres = psl->Resolve(NULL, 0);
+ // Ignore failure
}
- ppf->Release();
+ pidl = (LPITEMIDLIST)NULL;
+ hres = psl->GetIDList(&pidl);
}
- psl->Release();
+ ppf->Release();
}
- } else {
- IShellLinkA* psl;
- hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkA, (LPVOID *)&psl);
- if (SUCCEEDED(hres)) {
- IPersistFile* ppf;
- hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
- if (SUCCEEDED(hres)) {
- hres = ppf->Load(wstr, STGM_READ);
- if (SUCCEEDED(hres)) {
- if (resolve) {
- hres = psl->Resolve(NULL, 0);
- // Ignore failure
- }
- pidl = (LPITEMIDLIST)NULL;
- hres = psl->GetIDList(&pidl);
- }
- ppf->Release();
- }
- psl->Release();
- }
+ psl->Release();
}
if (doCoUninit) {
::CoUninitialize();
@@ -742,10 +724,10 @@
int nLength = env->GetStringLength(jname);
jchar* wszPath = new jchar[nLength + 1];
const jchar* strPath = env->GetStringChars(jname, NULL);
- wcsncpy(wszPath, strPath, nLength);
+ wcsncpy(reinterpret_cast<LPWSTR>(wszPath), reinterpret_cast<LPCWSTR>(strPath), nLength);
wszPath[nLength] = 0;
HRESULT res = pIShellFolder->ParseDisplayName(NULL, NULL,
- const_cast<jchar*>(wszPath), NULL, &pIDL, NULL);
+ reinterpret_cast<LPWSTR>(wszPath), NULL, &pIDL, NULL);
if (res != S_OK) {
JNU_ThrowIOException(env, "Could not parse name");
pIDL = 0;
@@ -804,7 +786,7 @@
(JNIEnv* env, jobject folder, jstring path)
{
TCHAR szBuf[MAX_PATH];
- LPCTSTR szPath = (LPCTSTR)JNU_GetStringPlatformChars(env, path, NULL);
+ LPCTSTR szPath = JNU_GetStringPlatformChars(env, path, NULL);
if (szPath == NULL) {
return NULL;
}
@@ -827,7 +809,7 @@
{
HICON hIcon = NULL;
SHFILEINFO fileInfo;
- LPCTSTR pathStr = (LPCTSTR)JNU_GetStringPlatformChars(env, absolutePath, NULL);
+ LPCTSTR pathStr = JNU_GetStringPlatformChars(env, absolutePath, NULL);
if (fn_SHGetFileInfo(pathStr, 0L, &fileInfo, sizeof(fileInfo),
SHGFI_ICON | (getLargeIcon ? 0 : SHGFI_SMALLICON)) != 0) {
hIcon = fileInfo.hIcon;
@@ -890,52 +872,27 @@
}
HRESULT hres;
- if (IS_NT) {
- IExtractIconW* pIcon;
- hres = pIShellFolder->GetUIObjectOf(NULL, 1, const_cast<LPCITEMIDLIST*>(&pidl),
+ IExtractIconW* pIcon;
+ hres = pIShellFolder->GetUIObjectOf(NULL, 1, const_cast<LPCITEMIDLIST*>(&pidl),
IID_IExtractIconW, NULL, (void**)&pIcon);
+ if (SUCCEEDED(hres)) {
+ WCHAR szBuf[MAX_PATH];
+ INT index;
+ UINT flags;
+ hres = pIcon->GetIconLocation(GIL_FORSHELL, szBuf, MAX_PATH, &index, &flags);
if (SUCCEEDED(hres)) {
- WCHAR szBuf[MAX_PATH];
- INT index;
- UINT flags;
- hres = pIcon->GetIconLocation(GIL_FORSHELL, szBuf, MAX_PATH, &index, &flags);
+ HICON hIconLarge;
+ hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
if (SUCCEEDED(hres)) {
- HICON hIconLarge;
- hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
- if (SUCCEEDED(hres)) {
- if (getLargeIcon) {
- fn_DestroyIcon((HICON)hIcon);
- hIcon = hIconLarge;
- } else {
- fn_DestroyIcon((HICON)hIconLarge);
- }
+ if (getLargeIcon) {
+ fn_DestroyIcon((HICON)hIcon);
+ hIcon = hIconLarge;
+ } else {
+ fn_DestroyIcon((HICON)hIconLarge);
}
}
- pIcon->Release();
}
- } else {
- IExtractIconA* pIcon;
- hres = pIShellFolder->GetUIObjectOf(NULL, 1, const_cast<LPCITEMIDLIST*>(&pidl),
- IID_IExtractIconA, NULL, (void**)&pIcon);
- if (SUCCEEDED(hres)) {
- CHAR szBuf[MAX_PATH];
- INT index;
- UINT flags;
- hres = pIcon->GetIconLocation(GIL_FORSHELL, szBuf, MAX_PATH, &index, &flags);
- if (SUCCEEDED(hres)) {
- HICON hIconLarge;
- hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
- if (SUCCEEDED(hres)) {
- if (getLargeIcon) {
- fn_DestroyIcon((HICON)hIcon);
- hIcon = hIconLarge;
- } else {
- fn_DestroyIcon((HICON)hIconLarge);
- }
- }
- }
- pIcon->Release();
- }
+ pIcon->Release();
}
if (doCoUninit) {
::CoUninitialize();
@@ -987,7 +944,7 @@
// XP supports alpha in some icons, and depending on device.
// This should take precedence over the icon mask bits.
BOOL hasAlpha = FALSE;
- if (isXP) {
+ if (IS_WINXP) {
for (int i = 0; i < nBits; i++) {
if ((colorBits[i] & 0xff000000) != 0) {
hasAlpha = TRUE;
@@ -1127,9 +1084,9 @@
(JNIEnv* env, jclass cls, jstring libName, jint iconID,
jint cxDesired, jint cyDesired, jboolean useVGAColors)
{
- HINSTANCE libHandle = LoadLibrary(env->GetStringChars(libName, NULL));
+ HINSTANCE libHandle = LoadLibrary(JNU_GetStringPlatformChars(env, libName, NULL));
if (libHandle != NULL) {
- UINT fuLoad = (useVGAColors && !isXP) ? LR_VGACOLOR : 0;
+ UINT fuLoad = (useVGAColors && !IS_WINXP) ? LR_VGACOLOR : 0;
return ptr_to_jlong(LoadImage(libHandle, MAKEINTRESOURCE(iconID),
IMAGE_ICON, cxDesired, cyDesired,
fuLoad));
--- a/jdk/src/windows/native/sun/windows/UnicowsLoader.cpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,430 +0,0 @@
-/*
- * Copyright 2003-2005 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 <float.h>
-#include "alloc.h"
-#include "UnicowsLoader.h"
-
-/*
- * Support functions for the Microsoft Layer for Unicode (MSLU).
- *
- * The MSLU maps the wide char version of Windows APIs with strings
- * to their ANSI version equivalent on Win98/ME platforms.
- *
- * For more details on the MSLU, please refer to the MSDN webpage at:
- * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mslu/winprog/microsoft_layer_for_unicode_on_windows_95_98_me_systems.asp
- */
-
-// The MSLU module handle. Only initialized on Win9x/ME.
-HMODULE UnicowsLoader::hmodUnicows = NULL;
-
-// MSLU loader entry point, which is called when the module
-// is initialized.
-extern "C" HMODULE (__stdcall *_PfnLoadUnicows)(void) =
- &UnicowsLoader::LoadUnicows;
-
-// Overriede APIs that are not supported by MSLU.
-extern "C" FARPROC Unicows_GetPrinterW =
- (FARPROC)&UnicowsLoader::GetPrinterWImpl;
-extern "C" FARPROC Unicows_EnumPrintersW =
- (FARPROC)&UnicowsLoader::EnumPrintersWImpl;
-
-HMODULE __stdcall UnicowsLoader::LoadUnicows(void)
-{
- if (hmodUnicows != NULL) {
- return hmodUnicows;
- }
-
- // Unfortunately, some DLLs that are loaded in conjunction with
- // unicows.dll may blow the FPU's control word. So save it here.
- unsigned int fpu_cw = _CW_DEFAULT;
- fpu_cw = _control87(0, 0);
-
- // Loads the DLL, assuming that the DLL resides in the same directory
- // as the AWT(_G).DLL. We cannot use "sun.boot.library.path" system
- // property since there is no way to issue JNI calls at this point
- // (JNI_OnLoad is not yet called so it cannot obtain JavaVM structure)
- //
- // To obtain the AWT module handle, call GetModuleHandleA() directly,
- // instead of AwtToolkit.GetModuleHandle(). Otherwise it could cause
- // an infinite loop if some W call were made inside AwtToolkit class
- // initialization.
- HMODULE hmodAWT = GetModuleHandleA("awt");
- LPSTR abspath = (LPSTR)safe_Malloc(MAX_PATH);
- if (abspath != NULL) {
- GetModuleFileNameA(hmodAWT, abspath, MAX_PATH);
- *strrchr(abspath, '\\') = '\0';
- strcat(abspath, "\\unicows.dll");
- hmodUnicows = LoadLibraryA(abspath);
- free(abspath);
- }
-
- // Restore the FPU control word if needed.
- if ( _control87(0, 0) != fpu_cw) {
- _control87(fpu_cw, 0xfffff);
- }
-
- return hmodUnicows;
-}
-
-HMODULE UnicowsLoader::GetModuleHandle(void)
-{
- return hmodUnicows;
-}
-
-
-// Convenient functions to convert DEVMODEA -> DEVMODEW
-void UnicowsLoader::DevModeA2DevModeW(
- const DEVMODEA * dma,
- DEVMODEW * dmw)
-{
- // convert string portions
- ::MultiByteToWideChar(CP_ACP, 0, (CHAR *)dma->dmDeviceName, CCHDEVICENAME,
- dmw->dmDeviceName, CCHDEVICENAME);
- ::MultiByteToWideChar(CP_ACP, 0, (CHAR *)dma->dmFormName, CCHDEVICENAME,
- dmw->dmFormName, CCHDEVICENAME);
-
- // copy driver specific data if exists
- if (dma->dmDriverExtra != 0) {
- PBYTE pExtraA = (PBYTE)(dma + 1);
- PBYTE pExtraW = (PBYTE)(dmw + 1);
- memcpy(pExtraW, pExtraA, dma->dmDriverExtra);
- }
-
- // copy normal struct members
- dmw->dmSpecVersion = dma->dmSpecVersion;
- dmw->dmDriverVersion = dma->dmDriverVersion;
- dmw->dmSize = dma->dmSize;
- dmw->dmDriverExtra = dma->dmDriverExtra;
- dmw->dmFields = dma->dmFields;
- dmw->dmPosition = dma->dmPosition;
- dmw->dmScale = dma->dmScale;
- dmw->dmCopies = dma->dmCopies;
- dmw->dmDefaultSource = dma->dmDefaultSource;
- dmw->dmPrintQuality = dma->dmPrintQuality;
- dmw->dmColor = dma->dmColor;
- dmw->dmDuplex = dma->dmDuplex;
- dmw->dmYResolution = dma->dmYResolution;
- dmw->dmTTOption = dma->dmTTOption;
- dmw->dmCollate = dma->dmCollate;
- dmw->dmLogPixels = dma->dmLogPixels;
- dmw->dmBitsPerPel = dma->dmBitsPerPel;
- dmw->dmPelsWidth = dma->dmPelsWidth;
- dmw->dmPelsHeight = dma->dmPelsHeight;
- dmw->dmDisplayFlags = dma->dmDisplayFlags;
- dmw->dmDisplayFrequency = dma->dmDisplayFrequency;
-#if(WINVER >= 0x0400)
- dmw->dmICMMethod = dma->dmICMMethod;
- dmw->dmICMIntent = dma->dmICMIntent;
- dmw->dmMediaType = dma->dmMediaType;
- dmw->dmDitherType = dma->dmDitherType;
- dmw->dmReserved1 = dma->dmReserved1;
- dmw->dmReserved2 = dma->dmReserved2;
-#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
- dmw->dmPanningWidth = dma->dmPanningWidth;
- dmw->dmPanningHeight = dma->dmPanningHeight;
-#endif
-#endif /* WINVER >= 0x0400 */
-}
-
-// PRINTER_INFO_1 struct converter
-void UnicowsLoader::PrinterInfo1A2W(
- const LPPRINTER_INFO_1A pi1A,
- LPPRINTER_INFO_1W pi1W,
- const DWORD num)
-{
- LPWSTR pwstrbuf = (LPWSTR)(pi1W + num);
- DWORD current;
-
- // loop through all structures
- for (current = 0; current < num; current ++) {
- LPPRINTER_INFO_1A curPi1A = pi1A + current;
- LPPRINTER_INFO_1W curPi1W = pi1W + current;
-
- // copy the structure itself
- memcpy(curPi1W, curPi1A, sizeof(_PRINTER_INFO_1W));
-
- // copy string members
- StringA2W(curPi1A->pDescription, &(curPi1W->pDescription), &pwstrbuf);
- StringA2W(curPi1A->pName, &(curPi1W->pName), &pwstrbuf);
- StringA2W(curPi1A->pComment, &(curPi1W->pComment), &pwstrbuf);
- }
-}
-
-// PRINTER_INFO_2 struct converter
-void UnicowsLoader::PrinterInfo2A2W(
- const LPPRINTER_INFO_2A pi2A,
- LPPRINTER_INFO_2W pi2W,
- const DWORD num)
-{
- PBYTE pbytebuf = (PBYTE)(pi2W + num);
- DWORD current;
-
- // loop through all structures
- for (current = 0; current < num; current ++) {
- LPPRINTER_INFO_2A curPi2A = pi2A + current;
- LPPRINTER_INFO_2W curPi2W = pi2W + current;
- // copy the structure itself
- memcpy(curPi2W, curPi2A, sizeof(_PRINTER_INFO_2W));
-
- // copy string members
- StringA2W(curPi2A->pServerName, &(curPi2W->pServerName), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pPrinterName, &(curPi2W->pPrinterName), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pShareName, &(curPi2W->pShareName), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pPortName, &(curPi2W->pPortName), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pDriverName, &(curPi2W->pDriverName), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pComment, &(curPi2W->pComment), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pLocation, &(curPi2W->pLocation), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pSepFile, &(curPi2W->pSepFile), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pPrintProcessor, &(curPi2W->pPrintProcessor), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pDatatype, &(curPi2W->pDatatype), (LPWSTR *)&pbytebuf);
- StringA2W(curPi2A->pParameters, &(curPi2W->pParameters), (LPWSTR *)&pbytebuf);
-
- // copy DEVMODE structure
- if (curPi2A->pDevMode != NULL) {
- curPi2W->pDevMode = (LPDEVMODEW)pbytebuf;
- DevModeA2DevModeW(curPi2A->pDevMode, curPi2W->pDevMode);
- pbytebuf += sizeof(DEVMODEW) + curPi2A->pDevMode->dmDriverExtra;
- }
- }
-}
-
-// PRINTER_INFO_5 struct converter
-void UnicowsLoader::PrinterInfo5A2W(
- const LPPRINTER_INFO_5A pi5A,
- LPPRINTER_INFO_5W pi5W,
- const DWORD num)
-{
- LPWSTR pbuf = (LPWSTR)(pi5W + num);
- DWORD current;
-
- // loop through all structures
- for (current = 0; current < num; current ++) {
- LPPRINTER_INFO_5A curPi5A = pi5A + current;
- LPPRINTER_INFO_5W curPi5W = pi5W + current;
-
- // copy the structure itself
- memcpy(curPi5W, curPi5A, sizeof(_PRINTER_INFO_5W));
-
- // copy string members
- StringA2W(curPi5A->pPrinterName, &(curPi5W->pPrinterName), &pbuf);
- StringA2W(curPi5A->pPortName, &(curPi5W->pPortName), &pbuf);
- }
-}
-
-// PRINTER_INFO_* struct converter. Supported levels are 1, 2, and 5.
-void UnicowsLoader::PrinterInfoA2W(
- const PVOID piA,
- PVOID piW,
- const DWORD Level,
- const DWORD num)
-{
- switch (Level) {
- case 1:
- PrinterInfo1A2W((LPPRINTER_INFO_1A)piA, (LPPRINTER_INFO_1W)piW, num);
- break;
-
- case 2:
- PrinterInfo2A2W((LPPRINTER_INFO_2A)piA, (LPPRINTER_INFO_2W)piW, num);
- break;
-
- case 5:
- PrinterInfo5A2W((LPPRINTER_INFO_5A)piA, (LPPRINTER_INFO_5W)piW, num);
- break;
- }
-}
-
-// converts string members in PRINTER_INFO_* struct.
-void UnicowsLoader::StringA2W(
- LPCSTR pSrcA,
- LPWSTR * ppwstrDest,
- LPWSTR * ppwstrbuf)
-{
- if (pSrcA != NULL) {
- DWORD cchWideChar = ::MultiByteToWideChar(CP_ACP, 0, pSrcA, -1, NULL, 0);
- *ppwstrDest = *ppwstrbuf;
- ::MultiByteToWideChar(CP_ACP, 0, pSrcA, -1, *ppwstrbuf, cchWideChar);
- *ppwstrbuf += cchWideChar;
- } else {
- *ppwstrDest = NULL;
- }
-}
-
-// GetPrinterW implementation. Level 1, 2, and 5 are the only supported levels.
-BOOL __stdcall UnicowsLoader::GetPrinterWImpl(
- HANDLE hPrinter,
- DWORD Level,
- LPBYTE pPrinter,
- DWORD cbBuf,
- LPDWORD pcbNeeded)
-{
- if ((Level != 1) && (Level != 2) && (Level != 5)) {
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
- }
-
- DWORD cbBufA = (cbBuf != 0 ? cbBuf / 2 : 0); // dirty estimation...
- LPBYTE pPrinterA = NULL;
- DWORD cbNeededA = 0;
- BOOL ret;
-
- if (cbBufA != 0) {
- pPrinterA = (LPBYTE)safe_Malloc(cbBufA);
- memset(pPrinterA, 0, cbBufA);
- }
-
- ret = ::GetPrinterA(hPrinter, Level, pPrinterA, cbBufA, &cbNeededA);
- *pcbNeeded = cbNeededA * 2; // dirty estimation...
-
- if (pPrinterA != NULL) {
- if (ret) {
- PrinterInfoA2W(pPrinterA, pPrinter, Level, 1);
- }
- free(pPrinterA);
- }
-
- return ret;
-}
-
-// EnumPrintersW implementation. Level 1, 2, and 5 are the only supported levels.
-BOOL __stdcall UnicowsLoader::EnumPrintersWImpl(
- DWORD Flags,
- LPWSTR Name,
- DWORD Level,
- LPBYTE pPrinterEnum,
- DWORD cbBuf,
- LPDWORD pcbNeeded,
- LPDWORD pcReturned)
-{
- if ((Level != 1) && (Level != 2) && (Level != 5)) {
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
- }
-
- LPSTR pNameA = NULL;
- DWORD cbBufA = (cbBuf != 0 ? cbBuf / 2 : 0); // dirty estimation...
- LPBYTE pPrinterEnumA = NULL;
- DWORD cbNeededA = 0;
- BOOL ret;
-
- if (Name != NULL) {
- DWORD len = static_cast<DWORD>(wcslen(Name)) + 1;
- pNameA = (LPSTR)safe_Malloc(len);
- ::WideCharToMultiByte(CP_ACP, 0, Name, -1, pNameA, len, NULL, NULL);
- }
-
- if (cbBufA != 0) {
- pPrinterEnumA = (LPBYTE)safe_Malloc(cbBufA);
- memset(pPrinterEnumA, 0, cbBufA);
- }
-
- ret = ::EnumPrintersA(Flags, pNameA, Level, pPrinterEnumA,
- cbBufA, &cbNeededA, pcReturned);
- *pcbNeeded = cbNeededA * 2; // dirty estimation...
-
- if (pPrinterEnumA != NULL) {
- if (ret) {
- PrinterInfoA2W(pPrinterEnumA, pPrinterEnum, Level, *pcReturned);
- }
- free(pPrinterEnumA);
- }
-
- if (pNameA != NULL) {
- free(pNameA);
- }
-
- return ret;
-}
-
-// wchar CRT implementations that VC6 does not support on Win9x.
-// These implementations are used on both Win9x/ME *and* WinNT/2K/XP.
-#undef _waccess
-#undef _wchmod
-#undef _wfullpath
-#undef _wremove
-#undef _wrename
-#undef _wstat
-#undef _wstati64
-#undef _wstat64
-#undef _wunlink
-#undef _wfopen
-#undef _wfreopen
-#undef _wfsopen
-#undef _wcreat
-#undef _wopen
-#undef _wsopen
-#undef _wfindfirst
-#undef _wfindfirst64
-#undef _wfindnext
-#undef _wfindnext64
-#undef _wsystem
-#undef _wexcel
-#undef _wexcele
-#undef _wexelp
-#undef _wexelpe
-#undef _wexecv
-#undef _wexecve
-#undef _wexecvp
-#undef _wexecvpe
-#undef _wpopen
-#undef _wputenv
-#undef _wspawnl
-#undef _wspawnle
-#undef _wspawnlp
-#undef _wspawnlpe
-#undef _wspawnv
-#undef _wspawnve
-#undef _wspawnvp
-#undef _wspawnvpe
-
-// _wfullpath implementation
-wchar_t * __cdecl UnicowsLoader::_wfullpathImpl(
- wchar_t * absPath,
- const wchar_t * relPath,
- size_t maxLength)
-{
- if (IS_NT) {
- return _wfullpath(absPath, relPath, maxLength);
- } else {
- wchar_t * ret = NULL;
- char * absPathA = (char *)safe_Malloc(maxLength);
- char * relPathA = (char *)safe_Malloc(maxLength);
- ::WideCharToMultiByte(CP_ACP, 0, relPath, -1, relPathA,
- static_cast<DWORD>(maxLength), NULL, NULL);
-
- char * retA = _fullpath(absPathA, relPathA, maxLength);
-
- if (retA != NULL) {
- ::MultiByteToWideChar(CP_ACP, 0, absPathA, -1,
- absPath, static_cast<DWORD>(maxLength));
- ret = absPath;
- }
-
- free(absPathA);
- free(relPathA);
-
- return ret;
- }
-}
--- a/jdk/src/windows/native/sun/windows/UnicowsLoader.h Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +0,0 @@
-/*
- * Copyright 2003-2004 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 UNICOWSLOADER_H
-#define UNICOWSLOADER_H
-
-#if !defined(UNICODE) || !defined(_UNICODE)
-#error UnicowsLoader module needs UNICODE and _UNICODE flags to be set on compiling
-#endif
-
-#include <winspool.h>
-
-// A class to load the Microsoft Layer for Unicode (unicows.dll)
-class UnicowsLoader {
-public:
- // this is called when the client DLL (this case, AWT) is loaded
- static HMODULE __stdcall LoadUnicows(void);
-
- // this is provided to pass the MSLU module handle
- static HMODULE GetModuleHandle(void);
-
- // member functions that implements functions that MSLU does not support
- static BOOL __stdcall GetPrinterWImpl(HANDLE, DWORD, LPBYTE, DWORD, LPDWORD);
- static BOOL __stdcall EnumPrintersWImpl(DWORD, LPWSTR, DWORD, LPBYTE,
- DWORD, LPDWORD, LPDWORD);
-
- // member functions that implements functions that VC6 CRT does not support
- // on Win9x
- static wchar_t * __cdecl _wfullpathImpl(wchar_t *, const wchar_t *, size_t);
-
-private:
- // The module handle
- static HMODULE hmodUnicows;
-
- // utility member functions
- static void DevModeA2DevModeW(const DEVMODEA *, DEVMODEW *);
- static void PrinterInfo1A2W(const LPPRINTER_INFO_1A, LPPRINTER_INFO_1W, const DWORD);
- static void PrinterInfo2A2W(const LPPRINTER_INFO_2A, LPPRINTER_INFO_2W, const DWORD);
- static void PrinterInfo5A2W(const LPPRINTER_INFO_5A, LPPRINTER_INFO_5W, const DWORD);
- static void PrinterInfoA2W(const PVOID, PVOID, DWORD, DWORD);
- static void StringA2W(LPCSTR, LPWSTR *, LPWSTR *);
-};
-
-#ifndef AWT_H
-// copied from awt.h
-#if defined (WIN32)
- #define IS_WIN32 TRUE
-#else
- #define IS_WIN32 FALSE
-#endif
-#define IS_NT (IS_WIN32 && !(::GetVersion() & 0x80000000))
-#endif // AWT_H
-
-// Now the platform encoding is Unicode (UTF-16), re-define JNU_ functions
-// to proper JNI functions.
-#define JNU_NewStringPlatform(env, x) env->NewString(x, static_cast<jsize>(_tcslen(x)))
-#define JNU_GetStringPlatformChars(env, x, y) (LPWSTR)env->GetStringChars(x, y)
-#define JNU_ReleaseStringPlatformChars(env, x, y) env->ReleaseStringChars(x, y)
-
-// The following Windows W-APIs are not supported by the MSLU.
-// You need to implement a stub to use these APIs. Or, if it is
-// apparent that the API is used only on WindowsNT/2K/XP, wrap
-// the call site with #undef - #define, e.g:
-//
-// #undef SomeFunctionW
-// call SomeFunctionW
-// #define SomeFunctionW NotSupportedByMSLU
-
-#define AcquireCredentialsHandleW NotSupportedByMSLU
-#define CreateNamedPipeW NotSupportedByMSLU
-#define CryptAcquireContextW NotSupportedByMSLU
-#define CryptEnumProvidersW NotSupportedByMSLU
-#define CryptEnumProviderTypesW NotSupportedByMSLU
-#define CryptGetDefaultProviderW NotSupportedByMSLU
-#define CryptSetProviderW NotSupportedByMSLU
-#define CryptSetProviderExW NotSupportedByMSLU
-#define CryptSignHashW NotSupportedByMSLU
-#define CryptVerifySignatureW NotSupportedByMSLU
-#define EnumerateSecurityPackagesW NotSupportedByMSLU
-#define EnumMonitorsW NotSupportedByMSLU
-#define EnumPortsW NotSupportedByMSLU
-#define EnumPrinterDriversW NotSupportedByMSLU
-//#define EnumPrintersW NotSupportedByMSLU
-#define EnumPrintProcessorDatatypesW NotSupportedByMSLU
-#define EnumPrintProcessorsW NotSupportedByMSLU
-#define FreeContextBufferW NotSupportedByMSLU
-#define GetCharABCWidthsFloatW NotSupportedByMSLU
-#define GetJobW NotSupportedByMSLU
-#define GetOpenFileNamePreviewW NotSupportedByMSLU
-//#define GetPrinterW NotSupportedByMSLU
-#define GetPrinterDataW NotSupportedByMSLU
-#define GetPrinterDriverW NotSupportedByMSLU
-#define GetSaveFileNamePreviewW NotSupportedByMSLU
-#define InitializeSecurityContextW NotSupportedByMSLU
-#define mciSendCommandW NotSupportedByMSLU
-#define mixerGetControlDetailsW NotSupportedByMSLU
-#define mixerGetLineControlsW NotSupportedByMSLU
-#define mixerGetLineInfoW NotSupportedByMSLU
-#define mmioInstallIOProcW NotSupportedByMSLU
-#define OleUIChangeSourceW NotSupportedByMSLU
-#define OleUIConvertW NotSupportedByMSLU
-#define OleUIEditLinksW NotSupportedByMSLU
-#define OleUIInsertObjectW NotSupportedByMSLU
-#define OleUIObjectPropertiesW NotSupportedByMSLU
-#define OleUIPasteSpecialW NotSupportedByMSLU
-#define OleUIPromptUserW NotSupportedByMSLU
-#define OleUIUpdateLinksW NotSupportedByMSLU
-#define PolyTextOutW NotSupportedByMSLU
-#define QueryContextAttributesW NotSupportedByMSLU
-#define QueryCredentialsAttributesW NotSupportedByMSLU
-#define QuerySecurityPackageInfoW NotSupportedByMSLU
-#define RasDeleteSubEntryW NotSupportedByMSLU
-#define RasSetSubEntryPropertiesW NotSupportedByMSLU
-#define ResetPrinterW NotSupportedByMSLU
-
-// The following Shell COM interfaces are not supported by the MSLU.
-// See ShellFolder2.cpp
-#define IID_IFileViewerW NotSupportedByMSLU
-#define IID_IShellLinkW NotSupportedByMSLU
-#define IID_IExtractIconW NotSupportedByMSLU
-#define IID_IShellCopyHookW NotSupportedByMSLU
-#define IID_IShellExecuteHookW NotSupportedByMSLU
-#define IID_INewShortcutHookW NotSupportedByMSLU
-
-// The following CRT functions should fail on compiling, as it does not work on
-// Win9x/ME platform. If you need these CRTs, write a wrapper for ANSI version
-// equivalents, in which it converts to/from Unicode using WideCharToMultiByte.
-//
-// Or, if it is apparent that the function is used only on WindowsNT/2K/XP, wrap
-// the call site with #undef - #define, e.g:
-//
-// #undef _wsomefunc
-// call _wsomefunc
-// #define _wsomefunc NotSupportedOnWin9X
-
-#define _waccess NotSupportedOnWin9X
-#define _wchmod NotSupportedOnWin9X
-#define _wfullpath UnicowsLoader::_wfullpathImpl
-#define _wremove NotSupportedOnWin9X
-#define _wrename NotSupportedOnWin9X
-#define _wstat NotSupportedOnWin9X
-#define _wstati64 NotSupportedOnWin9X
-#define _wstat64 NotSupportedOnWin9X
-#define _wunlink NotSupportedOnWin9X
-#define _wfopen NotSupportedOnWin9X
-#define _wfreopen NotSupportedOnWin9X
-#define _wfsopen NotSupportedOnWin9X
-#define _wcreat NotSupportedOnWin9X
-#define _wopen NotSupportedOnWin9X
-#define _wsopen NotSupportedOnWin9X
-#define _wfindfirst NotSupportedOnWin9X
-#define _wfindfirst64 NotSupportedOnWin9X
-#define _wfindnext NotSupportedOnWin9X
-#define _wfindnext64 NotSupportedOnWin9X
-#define _wsystem NotSupportedOnWin9X
-#define _wexcel NotSupportedOnWin9X
-#define _wexcele NotSupportedOnWin9X
-#define _wexelp NotSupportedOnWin9X
-#define _wexelpe NotSupportedOnWin9X
-#define _wexecv NotSupportedOnWin9X
-#define _wexecve NotSupportedOnWin9X
-#define _wexecvp NotSupportedOnWin9X
-#define _wexecvpe NotSupportedOnWin9X
-#define _wpopen NotSupportedOnWin9X
-#define _wputenv NotSupportedOnWin9X
-#define _wspawnl NotSupportedOnWin9X
-#define _wspawnle NotSupportedOnWin9X
-#define _wspawnlp NotSupportedOnWin9X
-#define _wspawnlpe NotSupportedOnWin9X
-#define _wspawnv NotSupportedOnWin9X
-#define _wspawnve NotSupportedOnWin9X
-#define _wspawnvp NotSupportedOnWin9X
-#define _wspawnvpe NotSupportedOnWin9X
-
-
-#endif // UNICOWSLOADER_H
--- a/jdk/src/windows/native/sun/windows/WPrinterJob.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/WPrinterJob.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-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
@@ -23,14 +23,14 @@
* have any questions.
*/
+#include "awt.h"
+
#include "stdhdrs.h"
#include <commdlg.h>
#include <winspool.h>
#include <limits.h>
#include <float.h>
-#include "awt.h"
-#include "awt_dlls.h"
#include "awt_Toolkit.h"
#include "awt_PrintControl.h"
@@ -74,7 +74,6 @@
TRY;
TCHAR cBuffer[250];
- BOOL bFlag;
OSVERSIONINFO osv;
PRINTER_INFO_2 *ppi2 = NULL;
DWORD dwNeeded = 0;
@@ -86,39 +85,8 @@
osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osv);
- // If Windows 95 or 98, use EnumPrinters...
- if (osv.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
-
- // The first EnumPrinters() tells you how big our buffer should
- // be in order to hold ALL of PRINTER_INFO_2. Note that this will
- // usually return FALSE. This only means that the buffer (the 4th
- // parameter) was not filled in. You don't want it filled in here...
-
- EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 2,
- NULL, 0, &dwNeeded, &dwReturned);
- if (dwNeeded == 0) {
- return NULL;
- }
-
- // Allocate enough space for PRINTER_INFO_2...
- ppi2 = (PRINTER_INFO_2 *)GlobalAlloc(GPTR, dwNeeded);
- if (!ppi2) {
- return NULL;
- }
-
- // The second EnumPrinters() will fill in all the current information.
- bFlag = EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 2,
- (LPBYTE)ppi2, dwNeeded, &dwNeeded, &dwReturned);
- if (!bFlag) {
- GlobalFree(ppi2);
- return NULL;
- }
-
- jPrinterName = JNU_NewStringPlatform(env, ppi2->pPrinterName);
- GlobalFree(ppi2);
- return jPrinterName;
-
- } else if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+ // If Windows 2000, XP, Vista
+ if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) {
// Retrieve the default string from Win.ini (the registry).
// String will be in form "printername,drivername,portname".
@@ -165,62 +133,32 @@
jobjectArray nameArray;
try {
- if (IS_NT) {
- ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
- NULL, 4, NULL, 0, &cbNeeded, &cReturned);
- pPrinterEnum = new BYTE[cbNeeded];
- ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
- NULL, 4, pPrinterEnum, cbNeeded, &cbNeeded,
- &cReturned);
+ ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
+ NULL, 4, NULL, 0, &cbNeeded, &cReturned);
+ pPrinterEnum = new BYTE[cbNeeded];
+ ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
+ NULL, 4, pPrinterEnum, cbNeeded, &cbNeeded,
+ &cReturned);
- if (cReturned > 0) {
- nameArray = env->NewObjectArray(cReturned, clazz, NULL);
- if (nameArray == NULL) {
- throw std::bad_alloc();
- }
- } else {
- nameArray = NULL;
+ if (cReturned > 0) {
+ nameArray = env->NewObjectArray(cReturned, clazz, NULL);
+ if (nameArray == NULL) {
+ throw std::bad_alloc();
}
+ } else {
+ nameArray = NULL;
+ }
- for (DWORD i = 0; i < cReturned; i++) {
- PRINTER_INFO_4 *info4 = (PRINTER_INFO_4 *)
- (pPrinterEnum + i * sizeof(PRINTER_INFO_4));
- utf_str = JNU_NewStringPlatform(env, info4->pPrinterName);
- if (utf_str == NULL) {
- throw std::bad_alloc();
- }
- env->SetObjectArrayElement(nameArray, i, utf_str);
- env->DeleteLocalRef(utf_str);
+ for (DWORD i = 0; i < cReturned; i++) {
+ PRINTER_INFO_4 *info4 = (PRINTER_INFO_4 *)
+ (pPrinterEnum + i * sizeof(PRINTER_INFO_4));
+ utf_str = JNU_NewStringPlatform(env, info4->pPrinterName);
+ if (utf_str == NULL) {
+ throw std::bad_alloc();
}
- } else {
- ::EnumPrinters(PRINTER_ENUM_LOCAL,
- NULL, 5, NULL, 0, &cbNeeded, &cReturned);
- pPrinterEnum = new BYTE[cbNeeded];
- ::EnumPrinters(PRINTER_ENUM_LOCAL,
- NULL, 5, pPrinterEnum, cbNeeded, &cbNeeded,
- &cReturned);
-
- if (cReturned > 0) {
- nameArray = env->NewObjectArray(cReturned, clazz, NULL);
- if (nameArray == NULL) {
- throw std::bad_alloc();
- }
- } else {
- nameArray = NULL;
- }
-
-
- for (DWORD i = 0; i < cReturned; i++) {
- PRINTER_INFO_5 *info5 = (PRINTER_INFO_5 *)
- (pPrinterEnum + i * sizeof(PRINTER_INFO_5));
- utf_str = JNU_NewStringPlatform(env, info5->pPrinterName);
- if (utf_str == NULL) {
- throw std::bad_alloc();
- }
- env->SetObjectArrayElement(nameArray, i, utf_str);
- env->DeleteLocalRef(utf_str);
- }
+ env->SetObjectArrayElement(nameArray, i, utf_str);
+ env->DeleteLocalRef(utf_str);
}
} catch (std::bad_alloc&) {
delete [] pPrinterEnum;
@@ -872,7 +810,7 @@
int numSizes = ::DeviceCapabilities(printerName, printerPort,
DC_PAPERS, NULL, NULL);
if (numSizes > 0) {
- LPWORD papers = (LPWORD)safe_Malloc(numSizes * sizeof(WORD));
+ LPTSTR papers = (LPTSTR)safe_Malloc(numSizes * sizeof(WORD));
if (papers != NULL &&
::DeviceCapabilities(printerName, printerPort,
DC_PAPERS, papers, NULL) != -1) {
--- a/jdk/src/windows/native/sun/windows/awt.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt.h Thu Feb 26 14:25:55 2009 -0800
@@ -26,10 +26,21 @@
#ifndef _AWT_H_
#define _AWT_H_
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#endif
+
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0600
+#endif
+
+//#ifndef NTDDI_VERSION
+//#define NTDDI_VERSION NTDDI_LONGHORN
+//#endif
+
#include "stdhdrs.h"
#include "alloc.h"
#include "awt_Debug.h"
-#include "UnicowsLoader.h"
extern COLORREF DesktopColor2RGB(int colorIndex);
@@ -129,40 +140,23 @@
/* /NEW JNI */
/*
- * IS_NT returns TRUE on NT, 2000, XP
- * IS_WIN2000 returns TRUE on 2000, XP
- * IS_WINXP returns TRUE on XP
- * IS_WIN95 returns TRUE on 95, 98, ME
- * IS_WIN98 returns TRUE on 98, ME
- * IS_WINME returns TRUE on ME
- * IS_WIN32 returns TRUE on 32-bit Pentium and
- * 64-bit Itanium.
* IS_WIN64 returns TRUE on 64-bit Itanium
- *
- * uname -s returns Windows_95 on 95
- * uname -s returns Windows_98 on 98 and ME
- * uname -s returns Windows_NT on NT and 2000 and XP
*/
-#if defined (WIN32)
- #define IS_WIN32 TRUE
-#else
- #define IS_WIN32 FALSE
-#endif
#if defined (_WIN64)
#define IS_WIN64 TRUE
#else
#define IS_WIN64 FALSE
#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)
-#define IS_WIN95 (IS_WIN32 && !IS_NT && LOBYTE(LOWORD(::GetVersion())) >= 4)
-#define IS_WIN98 (IS_WIN95 && HIBYTE(LOWORD(::GetVersion())) >= 10)
-#define IS_WINME (IS_WIN95 && HIBYTE(LOWORD(::GetVersion())) >= 90)
-#define IS_WIN4X (IS_WIN32 && LOBYTE(::GetVersion()) >= 4)
+
+/*
+ * IS_WIN2000 returns TRUE on 2000, XP and Vista
+ * IS_WINXP returns TRUE on XP and Vista
+ * IS_WINVISTA returns TRUE on Vista
+ */
+#define IS_WIN2000 (LOBYTE(LOWORD(::GetVersion())) >= 5)
+#define IS_WINXP ((IS_WIN2000 && HIBYTE(LOWORD(::GetVersion())) >= 1) || LOBYTE(LOWORD(::GetVersion())) > 5)
+#define IS_WINVISTA (LOBYTE(LOWORD(::GetVersion())) >= 6)
+
#define IS_WINVER_ATLEAST(maj, min) \
((maj) < LOBYTE(LOWORD(::GetVersion())) || \
(maj) == LOBYTE(LOWORD(::GetVersion())) && \
@@ -177,6 +171,12 @@
extern JavaVM *jvm;
+// Platform encoding is Unicode (UTF-16), re-define JNU_ functions
+// to proper JNI functions.
+#define JNU_NewStringPlatform(env, x) env->NewString(reinterpret_cast<jchar*>(x), static_cast<jsize>(_tcslen(x)))
+#define JNU_GetStringPlatformChars(env, x, y) reinterpret_cast<LPCWSTR>(env->GetStringChars(x, y))
+#define JNU_ReleaseStringPlatformChars(env, x, y) env->ReleaseStringChars(x, reinterpret_cast<const jchar*>(y))
+
/*
* Itanium symbols needed for 64-bit compilation.
* These are defined in winuser.h in the August 2001 MSDN update.
@@ -211,17 +211,12 @@
* NOTE: float.h must be defined if using these macros
*/
#define SAVE_CONTROLWORD \
- unsigned int fpu_cw = _CW_DEFAULT; \
- if (IS_WIN95) { \
- fpu_cw = _control87(0, 0); \
- }
+ unsigned int fpu_cw = _control87(0, 0);
-#define RESTORE_CONTROLWORD \
- if (IS_WIN95) { \
- if ( _control87(0, 0) != fpu_cw) { \
- _control87(fpu_cw, 0xfffff); \
- } \
- }
+#define RESTORE_CONTROLWORD \
+ if (_control87(0, 0) != fpu_cw) { \
+ _control87(fpu_cw, 0xffffffff); \
+ }
/*
* checks if the current thread is/isn't the toolkit thread
--- a/jdk/src/windows/native/sun/windows/awt_Button.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Button.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -23,7 +23,7 @@
* have any questions.
*/
-#include <jni.h>
+#include "awt.h"
#include "awt_Object.h" /* wop_pDataID */
#include "awt_Toolkit.h"
@@ -106,7 +106,7 @@
if (label == NULL) {
labelStr = L"";
} else {
- labelStr = env->GetStringChars(label, JNI_FALSE);
+ labelStr = JNU_GetStringPlatformChars(env, label, JNI_FALSE);
}
style = 0;
@@ -128,7 +128,7 @@
c->m_backgroundColorSet = TRUE; // suppress inheriting parent's color
c->UpdateBackground(env, target);
if (label != NULL)
- env->ReleaseStringChars(label, labelStr);
+ JNU_ReleaseStringPlatformChars(env, label, labelStr);
} catch (...) {
env->DeleteLocalRef(target);
if (label != NULL)
--- a/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include "awt_Toolkit.h"
#include "awt_Checkbox.h"
#include "awt_KeyboardFocusManager.h"
@@ -106,7 +107,7 @@
label = (jstring)env->GetObjectField(target, AwtCheckbox::labelID);
if (label != NULL) {
- labelStr = env->GetStringChars(label, 0);
+ labelStr = JNU_GetStringPlatformChars(env, label, 0);
}
if (labelStr != 0) {
jint x = env->GetIntField(target, AwtComponent::xID);
@@ -123,7 +124,7 @@
peer);
if (labelStr != defaultLabelStr) {
- env->ReleaseStringChars(label, labelStr);
+ JNU_ReleaseStringPlatformChars(env, label, labelStr);
}
} else {
throw std::bad_alloc();
--- a/jdk/src/windows/native/sun/windows/awt_Choice.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Choice.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -206,7 +206,7 @@
fieldHeight =(int)::SendMessage(GetHWnd(), CB_GETITEMHEIGHT, (UINT)-1, 0);
// add top and bottom border lines; border size is different for
// Win 4.x (3d edge) vs 3.x (1 pixel line)
- borderHeight = ::GetSystemMetrics(IS_WIN4X ? SM_CYEDGE : SM_CYBORDER);
+ borderHeight = ::GetSystemMetrics(SM_CYEDGE);
fieldHeight += borderHeight*2;
return fieldHeight;
}
@@ -424,6 +424,9 @@
case mrPassAlong:
return AwtComponent::WmKillFocus(hWndGotFocus);
}
+
+ DASSERT(false); // must never reach here
+ return mrDoDefault;
}
MsgRouting
--- a/jdk/src/windows/native/sun/windows/awt_Color.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Color.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-1999 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -97,7 +97,7 @@
iColor = COLOR_MENUTEXT;
break;
case sun_awt_windows_WColor_BUTTON_BKGND:
- iColor = (IS_NT) ? COLOR_BTNFACE : COLOR_3DFACE;
+ iColor = COLOR_BTNFACE;
break;
case sun_awt_windows_WColor_BUTTON_TEXT:
iColor = COLOR_BTNTEXT;
--- a/jdk/src/windows/native/sun/windows/awt_Component.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,7 +23,8 @@
* have any questions.
*/
-#include "windows.h"
+#include "awt.h"
+
#include <windowsx.h>
#include <zmouse.h>
@@ -42,7 +43,6 @@
#include "awt_MouseEvent.h"
#include "awt_Palette.h"
#include "awt_Toolkit.h"
-#include "awt_Unicode.h"
#include "awt_Window.h"
#include "awt_Win32GraphicsDevice.h"
#include "Hashtable.h"
@@ -67,30 +67,10 @@
#include <java_awt_event_MouseWheelEvent.h>
// Begin -- Win32 SDK include files
-#include <tchar.h>
#include <imm.h>
#include <ime.h>
// End -- Win32 SDK include files
-#ifndef GET_KEYSTATE_WPARAM // defined for (_WIN32_WINNT >= 0x0400)
-#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
-#endif
-
-#ifndef GET_WHEEL_DELTA_WPARAM // defined for (_WIN32_WINNT >= 0x0500)
-#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
-#endif
-
-// <XXX> <!-- TEMPORARY HACK TO TEST AGAINST OLD VC INLCUDES -->
-#if !defined(__int3264)
-#define GetWindowLongPtr GetWindowLong
-#define SetWindowLongPtr SetWindowLong
-#define GWLP_USERDATA GWL_USERDATA
-#define GWLP_WNDPROC GWL_WNDPROC
-typedef __int32 LONG_PTR;
-typedef unsigned __int32 ULONG_PTR;
-#endif // __int3264
-// </XXX>
-
#include <awt_DnDDT.h>
LPCTSTR szAwtComponentClassName = TEXT("SunAwtComponent");
@@ -207,9 +187,7 @@
UINT AwtComponent::m_CodePage
= AwtComponent::LangToCodePage(m_idLang);
-BOOL AwtComponent::m_isWin95 = IS_WIN95;
-BOOL AwtComponent::m_isWin2000 = IS_WIN2000;
-BOOL AwtComponent::m_isWinNT = IS_NT;
+jint *AwtComponent::masks;
static BOOL bLeftShiftIsDown = false;
static BOOL bRightShiftIsDown = false;
@@ -544,7 +522,7 @@
jobject createError = NULL;
if (dw == ERROR_OUTOFMEMORY)
{
- jstring errorMsg = env->NewStringUTF("too many window handles");
+ jstring errorMsg = JNU_NewStringPlatform(env, L"too many window handles");
createError = JNU_NewObjectByName(env, "java/lang/OutOfMemoryError",
"(Ljava/lang/String;)V",
errorMsg);
@@ -1201,6 +1179,9 @@
WIN_MSG(WM_MBUTTONDOWN)
WIN_MSG(WM_MBUTTONUP)
WIN_MSG(WM_MBUTTONDBLCLK)
+ WIN_MSG(WM_XBUTTONDBLCLK)
+ WIN_MSG(WM_XBUTTONDOWN)
+ WIN_MSG(WM_XBUTTONUP)
WIN_MSG(WM_MOUSEWHEEL)
WIN_MSG(WM_PARENTNOTIFY)
WIN_MSG(WM_ENTERMENULOOP)
@@ -1347,17 +1328,9 @@
return (LRESULT)TRUE;
}
- UINT switchMessage;
- if (IS_WIN95 && !IS_WIN98 && message == Wheel95GetMsg()) {
- // Wheel message is generated dynamically on 95. A quick swap and
- // we're good to go.
- DTRACE_PRINTLN1("got wheel event on 95. msg is %i\n", message);
- switchMessage = WM_MOUSEWHEEL;
- }
- else {
- switchMessage = message;
- }
-
+ DWORD curPos = 0;
+
+ UINT switchMessage = message;
switch (switchMessage) {
case WM_AWT_GETDC:
{
@@ -1644,67 +1617,87 @@
case WM_MBUTTONDOWN:
case WM_MBUTTONDBLCLK:
case WM_MBUTTONUP:
+ case WM_XBUTTONDBLCLK:
+ case WM_XBUTTONDOWN:
+ case WM_XBUTTONUP:
case WM_MOUSEMOVE:
case WM_MOUSEWHEEL:
case WM_AWT_MOUSEENTER:
case WM_AWT_MOUSEEXIT:
- {
- DWORD curPos = ::GetMessagePos();
+ curPos = ::GetMessagePos();
POINT myPos;
myPos.x = GET_X_LPARAM(curPos);
myPos.y = GET_Y_LPARAM(curPos);
::ScreenToClient(GetHWnd(), &myPos);
switch(switchMessage) {
case WM_AWT_MOUSEENTER:
- mr = WmMouseEnter(static_cast<UINT>(wParam), myPos.x, myPos.y); break;
+ mr = WmMouseEnter(static_cast<UINT>(wParam), myPos.x, myPos.y);
+ break;
case WM_LBUTTONDOWN:
case WM_LBUTTONDBLCLK:
- mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
- LEFT_BUTTON); break;
- case WM_LBUTTONUP:
- mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
- LEFT_BUTTON); break;
- case WM_MOUSEMOVE:
- mr = WmMouseMove(static_cast<UINT>(wParam), myPos.x, myPos.y); break;
- case WM_MBUTTONDOWN:
- case WM_MBUTTONDBLCLK:
- mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
- MIDDLE_BUTTON); break;
- case WM_RBUTTONDOWN:
- case WM_RBUTTONDBLCLK:
- mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
- RIGHT_BUTTON); break;
- case WM_RBUTTONUP:
- mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
- RIGHT_BUTTON);
- break;
- case WM_MBUTTONUP:
- mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
- MIDDLE_BUTTON);
- break;
- case WM_AWT_MOUSEEXIT:
- mr = WmMouseExit(static_cast<UINT>(wParam), myPos.x, myPos.y);
- break;
- case WM_MOUSEWHEEL:
- if (IS_WIN95 && !IS_WIN98) {
- // On 95, the wParam doesn't contain the keystate flags, just
- // the wheel rotation. The keystates are fetched in WmMouseWheel
- // using GetJavaModifiers().
- mr = WmMouseWheel(0,
- GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam),
- (int)wParam);
- return FALSE;
- }
- else {
+ mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ LEFT_BUTTON);
+ break;
+ case WM_LBUTTONUP:
+ mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ LEFT_BUTTON);
+ break;
+ case WM_MOUSEMOVE:
+ mr = WmMouseMove(static_cast<UINT>(wParam), myPos.x, myPos.y);
+ break;
+ case WM_MBUTTONDOWN:
+ case WM_MBUTTONDBLCLK:
+ mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ MIDDLE_BUTTON);
+ break;
+ case WM_XBUTTONDOWN:
+ case WM_XBUTTONDBLCLK:
+ if (AwtToolkit::GetInstance().areExtraMouseButtonsEnabled()) {
+ if (HIWORD(wParam) == 1) {
+ mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ X1_BUTTON);
+ }
+ if (HIWORD(wParam) == 2) {
+ mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ X2_BUTTON);
+ }
+ }
+ break;
+ case WM_XBUTTONUP:
+ if (AwtToolkit::GetInstance().areExtraMouseButtonsEnabled()) {
+ if (HIWORD(wParam) == 1) {
+ mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ X1_BUTTON);
+ }
+ if (HIWORD(wParam) == 2) {
+ mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ X2_BUTTON);
+ }
+ }
+ break;
+ case WM_RBUTTONDOWN:
+ case WM_RBUTTONDBLCLK:
+ mr = WmMouseDown(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ RIGHT_BUTTON);
+ break;
+ case WM_RBUTTONUP:
+ mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ RIGHT_BUTTON);
+ break;
+ case WM_MBUTTONUP:
+ mr = WmMouseUp(static_cast<UINT>(wParam), myPos.x, myPos.y,
+ MIDDLE_BUTTON);
+ break;
+ case WM_AWT_MOUSEEXIT:
+ mr = WmMouseExit(static_cast<UINT>(wParam), myPos.x, myPos.y);
+ break;
+ case WM_MOUSEWHEEL:
mr = WmMouseWheel(GET_KEYSTATE_WPARAM(wParam),
GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam),
GET_WHEEL_DELTA_WPARAM(wParam));
+ break;
}
break;
- }
- }
- break;
-
case WM_SETCURSOR:
mr = mrDoDefault;
if (LOWORD(lParam) == HTCLIENT) {
@@ -2589,8 +2582,12 @@
lastComp = this;
lastX = x;
lastY = y;
-
- if ( (flags & ALL_MK_BUTTONS) != 0 ) {
+ BOOL extraButtonsEnabled = AwtToolkit::GetInstance().areExtraMouseButtonsEnabled();
+ if (((flags & (ALL_MK_BUTTONS)) != 0) ||
+ (extraButtonsEnabled && (flags & (X_BUTTONS)) != 0))
+// if (( extraButtonsEnabled && ( (flags & (ALL_MK_BUTTONS | X_BUTTONS)) != 0 )) ||
+// ( !extraButtonsEnabled && (((flags & (ALL_MK_BUTTONS)) != 0 )) && ((flags & (X_BUTTONS)) == 0) ))
+ {
// 6404008 : if Dragged event fired we shouldn't fire
// Clicked event: m_firstDragSent set to TRUE.
// This is a partial backout of 5039416 fix.
@@ -2649,21 +2646,10 @@
jdouble preciseWheelRotation = (jdouble) wheelRotation / (-1 * WHEEL_DELTA);
MSG msg;
-
- if (IS_WIN95 && !IS_WIN98) {
- // 95 doesn't understand the SPI_GETWHEELSCROLLLINES - get the user
- // preference by other means
- DTRACE_PRINTLN("WmMouseWheel: using 95 branch");
- platformLines = Wheel95GetScrLines();
- result = true;
- InitMessage(&msg, lastMessage, wheelRotation, MAKELPARAM(x, y));
- }
- else {
- result = ::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0,
- &platformLines, 0);
- InitMessage(&msg, lastMessage, MAKEWPARAM(flags, wheelRotation),
- MAKELPARAM(x, y));
- }
+ result = ::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0,
+ &platformLines, 0);
+ InitMessage(&msg, lastMessage, MAKEWPARAM(flags, wheelRotation),
+ MAKELPARAM(x, y));
if (result) {
if (platformLines == WHEEL_PAGESCROLL) {
@@ -2743,156 +2729,21 @@
"AwtComponent::GetShiftKeyLocation vkey = %d = 0x%x scan = %d",
vkey, vkey, keyScanCode);
- if (m_isWinNT) {
- leftShiftScancode = ::MapVirtualKey(VK_LSHIFT, 0);
- rightShiftScancode = ::MapVirtualKey(VK_RSHIFT, 0);
-
- if (keyScanCode == leftShiftScancode) {
- return java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- }
- if (keyScanCode == rightShiftScancode) {
- return java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- }
-
- DASSERT(false);
- // Note: the above should not fail on NT (or 2000),
- // but just in case it does, try the more complicated method
- // we use for Win9x below.
- }
-
- // "Transition" bit = 0 if keyPressed, 1 if keyReleased
- BOOL released = ((1<<15) & flags);
-
- DTRACE_PRINTLN2(
- "AwtComponent::GetShiftKeyLocation bLeftShiftIsDown = %d bRightShiftIsDown == %d",
- bLeftShiftIsDown, bRightShiftIsDown);
- DTRACE_PRINTLN2(
- "AwtComponent::GetShiftKeyLocation lastShiftKeyPressed = %d released = %d",
- lastShiftKeyPressed, released);
-
- jint keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN;
-
- // It is possible for somebody to hold down one or both
- // Shift keys, causing repeat key events. We need to
- // handle all the cases.
- //
- // Just a side-note: if two or more keys are being held down,
- // and then one key is released, whether more key presses are
- // generated for the keys that are still held down depends on
- // which keys they are, and whether you released the right or
- // the left shift/ctrl/etc. key first. This also differs
- // between Win9x and NT. Just plain screwy.
- //
- // Note: on my PC, the repeat count is always 1. Yup, we need
- // 16 bits to handle that, all right.
-
- // Handle the case where only one of the Shift keys
- // was down before this event took place
- if (bLeftShiftIsDown && !bRightShiftIsDown) {
- if (released) {
- // This is a left Shift release
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- } else {
- // This is a right Shift press
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- }
- } else if (!bLeftShiftIsDown && bRightShiftIsDown) {
- if (released) {
- // This is a right Shift release
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- } else {
- // This is a left Shift press
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- }
- }
-
- // Handle the case where neither of the Shift keys
- // were down before this event took place
- if (!bLeftShiftIsDown && !bRightShiftIsDown) {
- DASSERT(!released);
- if (HIBYTE(::GetKeyState(VK_LSHIFT)) != 0) {
- // This is a left Shift press
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- } else if (HIBYTE(::GetKeyState(VK_RSHIFT)) != 0) {
- // This is a right Shift press
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- } else {
- DASSERT(false);
- }
- }
-
- // Handle the case where both Shift keys were down before
- // this event took place
- if (bLeftShiftIsDown && bRightShiftIsDown) {
- // If this is a key release event, we can just check to see
- // what the keyboard state is after the event
- if (released) {
- if (HIBYTE(::GetKeyState(VK_RSHIFT)) == 0) {
- // This is a right Shift release
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- } else if (HIBYTE(::GetKeyState(VK_LSHIFT)) == 0) {
- // This is a left Shift release
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- } else {
- DASSERT(false);
- }
- } else {
- // If this is a key press event, and both Shift keys were
- // already down, this is going to be a repeat of the last
- // Shift press
- if (lastShiftKeyPressed == VK_LSHIFT) {
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- } else if (lastShiftKeyPressed == VK_RSHIFT) {
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- } else {
- DASSERT(false);
- }
- }
- }
-
- if (keyLocation == java_awt_event_KeyEvent_KEY_LOCATION_UNKNOWN) {
- // Nothing we tried above worked for some reason. Sigh.
- // Make a last-ditch effort to guess what happened:
- // guess that the Shift scancodes are usually the same
- // from system to system, even though this isn't guaranteed.
- DTRACE_PRINTLN("Last-ditch effort at guessing Shift keyLocation");
-
- // Tested on a couple of Windows keyboards: these are standard values
- leftShiftScancode = 42;
- rightShiftScancode = 54;
-
- if (keyScanCode == leftShiftScancode) {
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
- } else if (keyScanCode == rightShiftScancode) {
- keyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
- }
- }
-
- // Set the Shift flags with the new key state.
- bLeftShiftIsDown = (HIBYTE(::GetKeyState(VK_LSHIFT)) != 0);
- bRightShiftIsDown = (HIBYTE(::GetKeyState(VK_RSHIFT)) != 0);
-
- // Update lastShiftKeyPressed
- if (released) {
- // At most one shift key is down now, so just check which one
- if (bLeftShiftIsDown) {
- lastShiftKeyPressed = VK_LSHIFT;
- DASSERT(!bRightShiftIsDown);
- } else if (bRightShiftIsDown) {
- lastShiftKeyPressed = VK_RSHIFT;
- } else {
- lastShiftKeyPressed = 0;
- }
- } else {
- // It was a press, so at least one shift key is down now
- if (keyLocation == java_awt_event_KeyEvent_KEY_LOCATION_LEFT) {
- lastShiftKeyPressed = VK_LSHIFT;
- } else if (keyLocation == java_awt_event_KeyEvent_KEY_LOCATION_RIGHT) {
- lastShiftKeyPressed = VK_RSHIFT;
- }
- }
-
- return keyLocation;
+ leftShiftScancode = ::MapVirtualKey(VK_LSHIFT, 0);
+ rightShiftScancode = ::MapVirtualKey(VK_RSHIFT, 0);
+
+ if (keyScanCode == leftShiftScancode) {
+ return java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
+ }
+ if (keyScanCode == rightShiftScancode) {
+ return java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
+ }
+
+ DASSERT(false);
+ // Note: the above should not fail on NT (or 2000)
+
+ // default value
+ return java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
}
/* Returns Java extended InputEvent modifieres.
@@ -2914,7 +2765,7 @@
modifiers |= java_awt_event_InputEvent_ALT_DOWN_MASK;
}
if (HIBYTE(::GetKeyState(VK_MBUTTON)) != 0) {
- modifiers |= java_awt_event_InputEvent_BUTTON2_DOWN_MASK;
+ modifiers |= java_awt_event_InputEvent_BUTTON2_DOWN_MASK;
}
if (HIBYTE(::GetKeyState(VK_RBUTTON)) != 0) {
modifiers |= java_awt_event_InputEvent_BUTTON3_DOWN_MASK;
@@ -2922,6 +2773,13 @@
if (HIBYTE(::GetKeyState(VK_LBUTTON)) != 0) {
modifiers |= java_awt_event_InputEvent_BUTTON1_DOWN_MASK;
}
+
+ if (HIBYTE(::GetKeyState(VK_XBUTTON1)) != 0) {
+ modifiers |= masks[3];
+ }
+ if (HIBYTE(::GetKeyState(VK_XBUTTON2)) != 0) {
+ modifiers |= masks[4];
+ }
return modifiers;
}
@@ -2936,6 +2794,11 @@
return java_awt_event_MouseEvent_BUTTON2;
case RIGHT_BUTTON:
return java_awt_event_MouseEvent_BUTTON3;
+ case X1_BUTTON: //16 :
+ //just assign 4 and 5 numbers because MouseEvent class doesn't contain const identifier for them now
+ return 4;
+ case X2_BUTTON: //32
+ return 5;
}
return java_awt_event_MouseEvent_NOBUTTON;
}
@@ -2950,6 +2813,10 @@
return MK_MBUTTON;
case RIGHT_BUTTON:
return MK_RBUTTON;
+ case X1_BUTTON:
+ return MK_XBUTTON1;
+ case X2_BUTTON:
+ return MK_XBUTTON2;
}
return 0;
}
@@ -2967,6 +2834,14 @@
#define VK_NONCONVERT 0x1D
#endif
+#ifndef VK_XBUTTON1
+#define VK_XBUTTON1 0x05
+#endif
+
+#ifndef VK_XBUTTON2
+#define VK_XBUTTON2 0x06
+#endif
+
typedef struct {
UINT javaKey;
UINT windowsKey;
@@ -3786,22 +3661,6 @@
// via WM_AWT_FORWARD_BYTE, but the Edit classes don't seem to
// like that.
- // Begin pollution
- if (!m_isWinNT && IsDBCSLeadByteEx(GetCodePage(), BYTE(character))) {
- if (GetDBCSEditHandle() != NULL) {
- return mrDoDefault;
- } else {
- // Kludge: Some Chinese IMEs, e.g. QuanPin, sends two WM_CHAR
- // messages for some punctuations (e.g. full stop) without sending
- // WM_IME_CHAR message beforehand.
- if (m_PendingLeadByte == 0) {
- m_PendingLeadByte = character;
- return mrConsume;
- }
- }
- }
- // End pollution
-
// We will simply create Java events here.
UINT message = system ? WM_SYSCHAR : WM_CHAR;
@@ -3861,43 +3720,8 @@
MsgRouting AwtComponent::WmForwardChar(WCHAR character, LPARAM lParam,
BOOL synthetic)
{
- if (m_isWinNT) {
- // just post WM_CHAR with unicode key value
- DefWindowProc(WM_CHAR, (WPARAM)character, lParam);
- return mrConsume;
- }
-
- // This message is sent from the Java key event handler.
- CHAR mbChar[2] = {'\0', '\0'};
-
- int cBytes = ::WideCharToMultiByte(GetCodePage(), 0, &character, 1, mbChar, 2, NULL, NULL);
- if (cBytes!=1 && cBytes!=2) return mrConsume;
-
- HWND hDBCSEditHandle = GetDBCSEditHandle();
-
- if (hDBCSEditHandle != NULL && cBytes==2)
- {
- // The first WM_CHAR message will get handled by the WmChar, but
- // the second WM_CHAR message will get picked off by the Edit class.
- // WmChar will never see it.
- // If an Edit class gets a lead byte, it immediately calls PeekMessage
- // and pulls the trail byte out of the message queue.
- ::PostMessage(hDBCSEditHandle, WM_CHAR, mbChar[0] & 0x00ff, lParam);
- ::PostMessage(hDBCSEditHandle, WM_CHAR, mbChar[1] & 0x00ff, lParam);
- }
- else
- {
- MSG* pMsg;
- pMsg = CreateMessage(WM_CHAR, mbChar[0] & 0x00ff, lParam);
- ::PostMessage(GetHWnd(), WM_AWT_FORWARD_BYTE, (WPARAM)synthetic,
- (LPARAM)pMsg);
- if (mbChar[1])
- {
- pMsg = CreateMessage(WM_CHAR, mbChar[1] & 0x00ff, lParam);
- ::PostMessage(GetHWnd(), WM_AWT_FORWARD_BYTE, (WPARAM)synthetic,
- (LPARAM)pMsg);
- }
- }
+ // just post WM_CHAR with unicode key value
+ DefWindowProc(WM_CHAR, (WPARAM)character, lParam);
return mrConsume;
}
@@ -3929,7 +3753,7 @@
SetCandidateWindow(iCandType, x-rc.left, y-rc.top);
}
if (m_bitsCandType != 0) {
- DefWindowProc(WM_IME_NOTIFY, IMN_OPENCANDIDATE, m_bitsCandType);
+ ::DefWindowProc(GetHWnd(), WM_IME_NOTIFY, IMN_OPENCANDIDATE, m_bitsCandType);
}
}
@@ -4543,7 +4367,7 @@
// Special case for components with a sunken border. Windows does not
// print the border correctly on PCL printers, so we have to do it ourselves.
- if (IS_WIN4X && (GetStyleEx() & WS_EX_CLIENTEDGE)) {
+ if (GetStyleEx() & WS_EX_CLIENTEDGE) {
RECT r;
VERIFY(::GetWindowRect(GetHWnd(), &r));
VERIFY(::OffsetRect(&r, -r.left, -r.top));
@@ -4559,7 +4383,7 @@
* We will first print the non-client area with the original offset,
* then the client area with a corrected offset.
*/
- if (IS_WIN4X && (GetStyleEx() & WS_EX_CLIENTEDGE)) {
+ if (GetStyleEx() & WS_EX_CLIENTEDGE) {
int nEdgeWidth = ::GetSystemMetrics(SM_CXEDGE);
int nEdgeHeight = ::GetSystemMetrics(SM_CYEDGE);
@@ -5305,7 +5129,12 @@
if (modifiers & java_awt_event_InputEvent_BUTTON3_DOWN_MASK) {
wLow |= MK_MBUTTON;
}
-
+ if (modifiers & X1_BUTTON) {
+ wLow |= GetButtonMK(X1_BUTTON);
+ }
+ if (modifiers & X2_BUTTON) {
+ wLow |= GetButtonMK(X2_BUTTON);
+ }
wheelAmt = (jint)JNU_CallMethodByName(env,
NULL,
@@ -5319,18 +5148,8 @@
// convert Java wheel amount value to Win32
wheelAmt *= -1 * WHEEL_DELTA;
- if (IS_WIN95 && !IS_WIN98) {
- // 95 doesn't understand WM_MOUSEWHEEL, so plug in value of
- // mouse wheel event on 95
- DTRACE_PRINTLN("awt_C::synthmm - 95 case");
- DASSERT(Wheel95GetMsg() != NULL);
- message = Wheel95GetMsg();
- wParam = wheelAmt;
- }
- else {
- message = WM_MOUSEWHEEL;
- wParam = MAKEWPARAM(wLow, wheelAmt);
- }
+ message = WM_MOUSEWHEEL;
+ wParam = MAKEWPARAM(wLow, wheelAmt);
break;
default:
@@ -5445,45 +5264,6 @@
VerifyState();
}
-/* Initialization of MouseWheel support on Windows 95 */
-void AwtComponent::Wheel95Init() {
- DASSERT(IS_WIN95 && !IS_WIN98);
-
- HWND mwHWND = NULL;
- UINT wheelMSG = WM_NULL;
- UINT suppMSG = WM_NULL;
- UINT linesMSG = WM_NULL;
- BOOL wheelActive;
- INT lines;
-
- mwHWND = HwndMSWheel(&wheelMSG, &suppMSG, &linesMSG, &wheelActive, &lines);
- if (mwHWND != WM_NULL) {
- sm_95WheelMessage = wheelMSG;
- sm_95WheelSupport = suppMSG;
- }
-}
-
-/* Win95 only
- * Return the user's preferred number of lines of test to scroll when the
- * mouse wheel is rotated.
- */
-UINT AwtComponent::Wheel95GetScrLines() {
- DASSERT(IS_WIN95 && !IS_WIN98);
- DASSERT(sm_95WheelSupport != NULL);
-
- HWND mwHWND = NULL;
- UINT linesMSG = WM_NULL;
- INT numLines = 3;
-
- linesMSG = RegisterWindowMessage(MSH_SCROLL_LINES);
- mwHWND = FindWindow(MSH_WHEELMODULE_CLASS, MSH_WHEELMODULE_TITLE);
-
- if (mwHWND && linesMSG) {
- numLines = (INT)::SendMessage(mwHWND, linesMSG, 0, 0);
- }
- return numLines;
-}
-
/*
* associate an AwtDropTarget with this AwtComponent
*/
@@ -5983,7 +5763,7 @@
{
AwtFont *awtFont = (AwtFont *)env->GetLongField(font, AwtFont::pDataID);
if (awtFont == NULL) {
- /*arguments of AwtFont::Create are changed for multifont component */
+ /*arguments of AwtFont::Create are changed for multifont component */
awtFont = AwtFont::Create(env, font);
}
env->SetLongField(font, AwtFont::pDataID, (jlong)awtFont);
@@ -6334,30 +6114,36 @@
c = (AwtComponent *)pData;
if (::IsWindow(c->GetHWnd()))
{
- 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);
-
- HRGN hRgn = ::ExtCreateRegion(NULL,
- sizeof(RGNDATAHEADER) + sizeof(RECT_T) * pRgnHdr->nCount, pRgnData);
-
- free(pRgnData);
+ 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.
+ 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);
+
+ hRgn = ::ExtCreateRegion(NULL,
+ sizeof(RGNDATAHEADER) + sizeof(RECT_T) * pRgnHdr->nCount, pRgnData);
+
+ free(pRgnData);
+ }
::SetWindowRgn(c->GetHWnd(), hRgn, TRUE);
}
@@ -6451,6 +6237,18 @@
Java_java_awt_Component_initIDs(JNIEnv *env, jclass cls)
{
TRY;
+ jclass inputEventClazz = env->FindClass("java/awt/event/InputEvent");
+ jmethodID getButtonDownMasksID = env->GetStaticMethodID(inputEventClazz, "getButtonDownMasks", "()[I");
+ jintArray obj = (jintArray)env->CallStaticObjectMethod(inputEventClazz, getButtonDownMasksID);
+ jint * tmp = env->GetIntArrayElements(obj, JNI_FALSE);
+
+ jsize len = env->GetArrayLength(obj);
+ AwtComponent::masks = new jint[len];
+ for (int i = 0; i < len; i++) {
+ AwtComponent::masks[i] = tmp[i];
+ }
+ env->ReleaseIntArrayElements(obj, tmp, 0);
+ env->DeleteLocalRef(obj);
/* class ids */
jclass peerCls = env->FindClass("sun/awt/windows/WComponentPeer");
@@ -7025,20 +6823,6 @@
CATCH_BAD_ALLOC_RET(NULL);
}
-/*
- * Class: sun_awt_windows_WComponentPeer
- * Method: wheelInit
- * Signature: ()V
- */
-JNIEXPORT void JNICALL
-Java_sun_awt_windows_WComponentPeer_wheelInit(JNIEnv *env, jclass cls)
-{
- // Only necessary on Win95
- if (IS_WIN95 && !IS_WIN98) {
- AwtComponent::Wheel95Init();
- }
-}
-
JNIEXPORT jboolean JNICALL
Java_sun_awt_windows_WComponentPeer_processSynchronousLightweightTransfer(JNIEnv *env, jclass cls,
jobject heavyweight,
@@ -7217,7 +7001,9 @@
"getName",
"()Ljava/lang/String;").l;
DASSERT(!safe_ExceptionOccurred(env));
- printf("\t%S\n", TO_WSTRING(targetStr));
+ LPCWSTR targetStrW = JNU_GetStringPlatformChars(env, targetStr, NULL);
+ printf("\t%S\n", targetStrW);
+ JNU_ReleaseStringPlatformChars(env, targetStr, targetStrW);
}
printf("\twas: [%d,%d,%dx%d]\n", x, y, width, height);
if (!fSizeValid) {
--- a/jdk/src/windows/native/sun/windows/awt_Component.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Component.h Thu Feb 26 14:25:55 2009 -0800
@@ -53,6 +53,22 @@
#define MIDDLE_BUTTON 2
#define RIGHT_BUTTON 4
#define DBL_CLICK 8
+#define X1_BUTTON 16
+#define X2_BUTTON 32
+
+#ifndef MK_XBUTTON1
+#define MK_XBUTTON1 0x0020
+#endif
+
+#ifndef MK_XBUTTON2
+#define MK_XBUTTON2 0x0040
+#endif
+
+// combination of standard mouse button flags
+const int ALL_MK_BUTTONS = MK_LBUTTON|MK_MBUTTON|MK_RBUTTON;
+const int X_BUTTONS = MK_XBUTTON1|MK_XBUTTON2;
+
+
// Whether to check for embedded frame and adjust location
#define CHECK_EMBEDDED 0
@@ -81,11 +97,6 @@
class AwtComponent : public AwtObject {
public:
- enum {
- // combination of all mouse button flags
- ALL_MK_BUTTONS = MK_LBUTTON|MK_MBUTTON|MK_RBUTTON
- };
-
/* java.awt.Component fields and method IDs */
static jfieldID peerID;
static jfieldID xID;
@@ -112,6 +123,7 @@
static jmethodID replaceSurfaceDataLaterMID;
static const UINT WmAwtIsComponent;
+ static jint * masks; //InputEvent mask array
AwtComponent();
virtual ~AwtComponent();
@@ -675,10 +687,6 @@
static HWND sm_focusOwner;
static HWND sm_focusedWindow;
- static BOOL m_isWin95;
- static BOOL m_isWin2000;
- static BOOL m_isWinNT;
-
static BOOL sm_bMenuLoop;
static INLINE BOOL isMenuLoopActive() {
return sm_bMenuLoop;
--- a/jdk/src/windows/native/sun/windows/awt_Cursor.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Cursor.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-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
@@ -79,10 +79,6 @@
custom = TRUE;
dirty = FALSE;
-
- if (IsWin95Cursor()) {
- customCursors.Add(this);
- }
}
AwtCursor::~AwtCursor()
@@ -96,9 +92,6 @@
if (custom) {
::DestroyIcon(hCursor);
- if (IsWin95Cursor()) {
- customCursors.Remove(this);
- }
}
JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
@@ -256,16 +249,6 @@
env->DeleteLocalRef(jcomp);
}
-void AwtCursor::DirtyAllCustomCursors() {
- if (IsWin95Cursor()) {
- AwtObjectListItem *cur = customCursors.m_head;
- while (cur != NULL) {
- ((AwtCursor *)(cur->obj))->dirty = TRUE;
- cur = cur->next;
- }
- }
-}
-
void AwtCursor::Rebuild() {
if (!dirty) {
return;
@@ -294,23 +277,6 @@
dirty = FALSE;
}
-/* Bug fix for 4205805:
- Custom cursor on WIN95 needs more effort, the same API works fine on NT
- and WIN98. On Win95, DDB has to be passed in when calling createIconIndirect
- Since DDB depends on the DISPLAY, we have to rebuild all the custom cursors
- when user changes the display settings.
-*/
-BOOL AwtCursor::IsWin95Cursor() {
- static BOOL val;
- static BOOL known = FALSE;
- if (!known) {
- val = (IS_WIN32 && !IS_NT && LOBYTE(LOWORD(::GetVersion())) == 4 &&
- HIBYTE(LOWORD(::GetVersion())) == 0);
- known = TRUE;
- }
- return val;
-}
-
extern "C" {
/************************************************************************
--- a/jdk/src/windows/native/sun/windows/awt_Cursor.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Cursor.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-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
@@ -66,7 +66,6 @@
}
static AwtCursor * CreateSystemCursor(jobject jCursor);
static void UpdateCursor(AwtComponent *comp);
- static void DirtyAllCustomCursors();
static HCURSOR GetCursor(JNIEnv *env, AwtComponent *comp);
static void setPData(jobject cursor, jlong pdata) {
@@ -76,7 +75,6 @@
private:
void Rebuild();
- static BOOL IsWin95Cursor();
HCURSOR hCursor;
jweak jCursor;
--- a/jdk/src/windows/native/sun/windows/awt_DataTransferer.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_DataTransferer.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2000-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
@@ -24,12 +24,11 @@
*/
#include "awt.h"
-#include "awt_dlls.h"
#include "awt_DataTransferer.h"
#include "awt_DnDDT.h"
#include "awt_TextComponent.h"
-#include "awt_Unicode.h"
#include <shlobj.h>
+#include <shellapi.h>
#include <sun_awt_datatransfer_DataTransferer.h>
#include <sun_awt_windows_WDataTransferer.h>
@@ -271,9 +270,7 @@
hdrop = (HDROP)bBytes;
- load_shell_procs();
-
- UINT nFilenames = (*do_drag_query_file)(hdrop, 0xFFFFFFFF, NULL, 0);
+ UINT nFilenames = ::DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);
jclass str_clazz = env->FindClass("java/lang/String");
DASSERT(str_clazz != NULL);
@@ -287,12 +284,12 @@
buffer = (LPTSTR)safe_Malloc(bufsize*sizeof(TCHAR));
for (UINT i = 0; i < nFilenames; i++) {
- UINT size = (*do_drag_query_file)(hdrop, i, NULL, 0);
+ UINT size = ::DragQueryFile(hdrop, i, NULL, 0);
if (size > bufsize) {
bufsize = size;
buffer = (LPTSTR)safe_Realloc(buffer, bufsize*sizeof(TCHAR));
}
- (*do_drag_query_file)(hdrop, i, buffer, bufsize);
+ ::DragQueryFile(hdrop, i, buffer, bufsize);
jstring name = JNU_NewStringPlatform(env, buffer);
if (name == NULL) {
@@ -401,7 +398,7 @@
case 4:
case 8:
nColorEntries = (pSrcBmih->biClrUsed != 0) ?
- pSrcBmih->biClrUsed : 1 << (pSrcBmih->biBitCount - 1);
+ pSrcBmih->biClrUsed : (1 << pSrcBmih->biBitCount);
break;
case 16:
case 24:
@@ -454,11 +451,6 @@
width = p.x;
height = -p.y;
- // Win9X supports only 16-bit signed coordinates.
- if (IS_WIN95) {
- if (width > 0x7FFF) { width = 0x7FFF; }
- if (height > 0x7FFF) { height = 0x7FFF; }
- }
free(lpemh);
}
break;
--- a/jdk/src/windows/native/sun/windows/awt_Desktop.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Desktop.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,8 +23,8 @@
* have any questions.
*/
+#include "awt.h"
#include <jni.h>
-#include <Windows.h>
#include <shellapi.h>
#include <float.h>
@@ -40,32 +40,32 @@
JNIEXPORT jstring JNICALL Java_sun_awt_windows_WDesktopPeer_ShellExecute
(JNIEnv *env, jclass cls, jstring uri_j, jstring verb_j)
{
- const WCHAR* uri_c = env->GetStringChars(uri_j, JNI_FALSE);
- const WCHAR* verb_c = env->GetStringChars(verb_j, JNI_FALSE);
+ LPCWSTR uri_c = JNU_GetStringPlatformChars(env, uri_j, JNI_FALSE);
+ LPCWSTR verb_c = JNU_GetStringPlatformChars(env, verb_j, JNI_FALSE);
// 6457572: ShellExecute possibly changes FPU control word - saving it here
unsigned oldcontrol87 = _control87(0, 0);
- HINSTANCE retval = ShellExecuteW(NULL, verb_c, uri_c, NULL, NULL, SW_SHOWNORMAL);
+ HINSTANCE retval = ::ShellExecute(NULL, verb_c, uri_c, NULL, NULL, SW_SHOWNORMAL);
_control87(oldcontrol87, 0xffffffff);
- env->ReleaseStringChars(uri_j, uri_c);
- env->ReleaseStringChars(verb_j, verb_c);
+ JNU_ReleaseStringPlatformChars(env, uri_j, uri_c);
+ JNU_ReleaseStringPlatformChars(env, verb_j, verb_c);
if ((int)retval <= 32) {
// ShellExecute failed.
- LPVOID buffer;
- int len = FormatMessageW(
+ LPTSTR buffer = NULL;
+ int len = ::FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPWSTR) &buffer,
+ (LPTSTR)&buffer,
0,
NULL );
- jstring errmsg = env->NewString((LPCWSTR)buffer, len);
+ jstring errmsg = JNU_NewStringPlatform(env, buffer, len);
LocalFree(buffer);
return errmsg;
}
--- a/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -23,17 +23,17 @@
* have any questions.
*/
-#include "stdhdrs.h"
+#include "awt.h"
#include "mmsystem.h"
#include "jlong.h"
-#include "awt.h"
#include "awt_DesktopProperties.h"
-#include "awt_dlls.h"
+#include "awt_Toolkit.h"
#include "sun_awt_windows_WDesktopProperties.h"
#include "java_awt_Font.h"
#include "awtmsg.h"
-#include "Zmouse.h"
-#include "shellapi.h"
+#include "zmouse.h"
+#include <shellapi.h>
+#include <shlobj.h>
// WDesktopProperties fields
jfieldID AwtDesktopProperties::pDataID = 0;
@@ -44,10 +44,6 @@
jmethodID AwtDesktopProperties::setFontPropertyID = 0;
jmethodID AwtDesktopProperties::setSoundPropertyID = 0;
-typedef VOID (WINAPI *SHGetSettingsType)(LPSHELLFLAGSTATE, DWORD);
-static HMODULE libShell32 = NULL;
-static SHGetSettingsType fn_SHGetSettings;
-
AwtDesktopProperties::AwtDesktopProperties(jobject self) {
this->self = GetEnv()->NewGlobalRef(self);
GetEnv()->SetLongField( self, AwtDesktopProperties::pDataID,
@@ -431,14 +427,12 @@
void AwtDesktopProperties::GetColorParameters() {
- if (IS_WIN98 || IS_WIN2000) {
- SetColorProperty(TEXT("win.frame.activeCaptionGradientColor"),
- GetSysColor(COLOR_GRADIENTACTIVECAPTION));
- SetColorProperty(TEXT("win.frame.inactiveCaptionGradientColor"),
- GetSysColor(COLOR_GRADIENTINACTIVECAPTION));
- SetColorProperty(TEXT("win.item.hotTrackedColor"),
- GetSysColor(COLOR_HOTLIGHT));
- }
+ SetColorProperty(TEXT("win.frame.activeCaptionGradientColor"),
+ GetSysColor(COLOR_GRADIENTACTIVECAPTION));
+ SetColorProperty(TEXT("win.frame.inactiveCaptionGradientColor"),
+ GetSysColor(COLOR_GRADIENTINACTIVECAPTION));
+ SetColorProperty(TEXT("win.item.hotTrackedColor"),
+ GetSysColor(COLOR_HOTLIGHT));
SetColorProperty(TEXT("win.3d.darkShadowColor"), GetSysColor(COLOR_3DDKSHADOW));
SetColorProperty(TEXT("win.3d.backgroundColor"), GetSysColor(COLOR_3DFACE));
SetColorProperty(TEXT("win.3d.highlightColor"), GetSysColor(COLOR_3DHIGHLIGHT));
@@ -510,40 +504,18 @@
// This property is called "win.frame.fullWindowDragsOn" above
// This is one of the properties that don't trigger WM_SETTINGCHANGE
SetBooleanProperty(TEXT("awt.dynamicLayoutSupported"), GetBooleanParameter(SPI_GETDRAGFULLWINDOWS));
-
- // 95 MouseWheel support
- // More or less copied from the MSH_MOUSEWHEEL MSDN entry
- if (IS_WIN95 && !IS_WIN98) {
- HWND hdlMSHWHEEL = NULL;
- UINT msgMSHWheelSupported = NULL;
- BOOL wheelSupported = FALSE;
-
- msgMSHWheelSupported = RegisterWindowMessage(MSH_WHEELSUPPORT);
- hdlMSHWHEEL = FindWindow(MSH_WHEELMODULE_CLASS, MSH_WHEELMODULE_TITLE);
- if (hdlMSHWHEEL && msgMSHWheelSupported) {
- wheelSupported = (BOOL)::SendMessage(hdlMSHWHEEL,
- msgMSHWheelSupported, 0, 0);
- }
- SetBooleanProperty(TEXT("awt.wheelMousePresent"), wheelSupported);
- }
- else {
- SetBooleanProperty(TEXT("awt.wheelMousePresent"),
- ::GetSystemMetrics(SM_MOUSEWHEELPRESENT));
- }
+ SetBooleanProperty(TEXT("awt.wheelMousePresent"),
+ ::GetSystemMetrics(SM_MOUSEWHEELPRESENT));
// END cross-platform properties
- if (IS_WIN98 || IS_WIN2000) {
- //DWORD menuShowDelay;
- //SystemParametersInfo(SPI_GETMENUSHOWDELAY, 0, &menuShowDelay, 0);
- // SetIntegerProperty(TEXT("win.menu.showDelay"), menuShowDelay);
- SetBooleanProperty(TEXT("win.frame.captionGradientsOn"), GetBooleanParameter(SPI_GETGRADIENTCAPTIONS));
- SetBooleanProperty(TEXT("win.item.hotTrackingOn"), GetBooleanParameter(SPI_GETHOTTRACKING));
- }
+ //DWORD menuShowDelay;
+ //SystemParametersInfo(SPI_GETMENUSHOWDELAY, 0, &menuShowDelay, 0);
+ // SetIntegerProperty(TEXT("win.menu.showDelay"), menuShowDelay);
+ SetBooleanProperty(TEXT("win.frame.captionGradientsOn"), GetBooleanParameter(SPI_GETGRADIENTCAPTIONS));
+ SetBooleanProperty(TEXT("win.item.hotTrackingOn"), GetBooleanParameter(SPI_GETHOTTRACKING));
- if (IS_WIN2000) {
- SetBooleanProperty(TEXT("win.menu.keyboardCuesOn"), GetBooleanParameter(SPI_GETKEYBOARDCUES));
- }
+ SetBooleanProperty(TEXT("win.menu.keyboardCuesOn"), GetBooleanParameter(SPI_GETKEYBOARDCUES));
// High contrast accessibility property
HIGHCONTRAST contrast;
@@ -557,21 +529,19 @@
SetBooleanProperty(TEXT("win.highContrast.on"), FALSE);
}
- if (fn_SHGetSettings != NULL) {
- SHELLFLAGSTATE sfs;
- fn_SHGetSettings(&sfs, SSF_SHOWALLOBJECTS | SSF_SHOWATTRIBCOL);
- if (sfs.fShowAllObjects) {
- SetBooleanProperty(TEXT("awt.file.showHiddenFiles"), TRUE);
- }
- else {
- SetBooleanProperty(TEXT("awt.file.showHiddenFiles"), FALSE);
- }
- if (sfs.fShowAttribCol) {
- SetBooleanProperty(TEXT("awt.file.showAttribCol"), TRUE);
- }
- else {
- SetBooleanProperty(TEXT("awt.file.showAttribCol"), FALSE);
- }
+ SHELLFLAGSTATE sfs;
+ ::SHGetSettings(&sfs, SSF_SHOWALLOBJECTS | SSF_SHOWATTRIBCOL);
+ if (sfs.fShowAllObjects) {
+ SetBooleanProperty(TEXT("awt.file.showHiddenFiles"), TRUE);
+ }
+ else {
+ SetBooleanProperty(TEXT("awt.file.showHiddenFiles"), FALSE);
+ }
+ if (sfs.fShowAttribCol) {
+ SetBooleanProperty(TEXT("awt.file.showAttribCol"), TRUE);
+ }
+ else {
+ SetBooleanProperty(TEXT("awt.file.showAttribCol"), FALSE);
}
LPTSTR value;
@@ -667,7 +637,7 @@
}
void AwtDesktopProperties::SetStringProperty(LPCTSTR propName, LPTSTR value) {
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
GetEnv()->CallVoidMethod(self,
AwtDesktopProperties::setStringPropertyID,
key, JNU_NewStringPlatform(GetEnv(), value));
@@ -675,7 +645,7 @@
}
void AwtDesktopProperties::SetIntegerProperty(LPCTSTR propName, int value) {
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
GetEnv()->CallVoidMethod(self,
AwtDesktopProperties::setIntegerPropertyID,
key, (jint)value);
@@ -683,7 +653,7 @@
}
void AwtDesktopProperties::SetBooleanProperty(LPCTSTR propName, BOOL value) {
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
GetEnv()->CallVoidMethod(self,
AwtDesktopProperties::setBooleanPropertyID,
key, value ? JNI_TRUE : JNI_FALSE);
@@ -691,7 +661,7 @@
}
void AwtDesktopProperties::SetColorProperty(LPCTSTR propName, DWORD value) {
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
GetEnv()->CallVoidMethod(self,
AwtDesktopProperties::setColorPropertyID,
key, GetRValue(value), GetGValue(value),
@@ -743,7 +713,7 @@
style |= java_awt_Font_ITALIC;
}
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
GetEnv()->CallVoidMethod(self,
AwtDesktopProperties::setFontPropertyID,
key, fontName, style, pointSize);
@@ -761,7 +731,7 @@
jint pointSize;
jint style;
- fontName = JNU_NewStringPlatform(GetEnv(), font.lfFaceName);
+ fontName = JNU_NewStringPlatform(GetEnv(), const_cast<LPWSTR>(font.lfFaceName));
#if 0
HDC hdc;
@@ -784,7 +754,7 @@
style |= java_awt_Font_ITALIC;
}
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
GetEnv()->CallVoidMethod(self, AwtDesktopProperties::setFontPropertyID,
key, fontName, style, pointSize);
@@ -793,8 +763,8 @@
}
void AwtDesktopProperties::SetSoundProperty(LPCTSTR propName, LPCTSTR winEventName) {
- jstring key = JNU_NewStringPlatform(GetEnv(), propName);
- jstring event = JNU_NewStringPlatform(GetEnv(), winEventName);
+ jstring key = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(propName));
+ jstring event = JNU_NewStringPlatform(GetEnv(), const_cast<LPTSTR>(winEventName));
GetEnv()->CallVoidMethod(self,
AwtDesktopProperties::setSoundPropertyID,
key, event);
@@ -805,9 +775,9 @@
void AwtDesktopProperties::PlayWindowsSound(LPCTSTR event) {
// stop any currently playing sounds
- AwtWinMM::PlaySoundWrapper(NULL, NULL, SND_PURGE);
+ ::PlaySound(NULL, NULL, SND_PURGE);
// play the sound for the given event name
- AwtWinMM::PlaySoundWrapper(event, NULL, SND_ASYNC|SND_ALIAS|SND_NODEFAULT);
+ ::PlaySound(event, NULL, SND_ASYNC|SND_ALIAS|SND_NODEFAULT);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -852,16 +822,6 @@
Java_sun_awt_windows_WDesktopProperties_init(JNIEnv *env, jobject self) {
TRY;
- // Open shell32.dll, get the symbol for SHGetSettings
- libShell32 = LoadLibrary(TEXT("shell32.dll"));
- if (libShell32 == NULL) {
- fn_SHGetSettings = NULL;
- }
- else {
- fn_SHGetSettings = (SHGetSettingsType)GetProcAddress(
- libShell32, "SHGetSettings");
- }
-
new AwtDesktopProperties(self);
CATCH_BAD_ALLOC;
--- a/jdk/src/windows/native/sun/windows/awt_Dialog.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Dialog.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -132,14 +132,13 @@
dialog = new AwtDialog();
{
- int colorId = IS_WIN4X ? COLOR_3DFACE : COLOR_WINDOW;
+ int colorId = COLOR_3DFACE;
DWORD style = WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN;
if (hwndParent != NULL) {
style |= WS_POPUP;
}
style &= ~(WS_MINIMIZEBOX|WS_MAXIMIZEBOX);
- DWORD exStyle = IS_WIN4X ? WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME
- : 0;
+ DWORD exStyle = WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME;
if (GetRTL()) {
exStyle |= WS_EX_RIGHT | WS_EX_LEFTSCROLLBAR;
@@ -663,7 +662,7 @@
int badAlloc = 0;
LPCTSTR coption;
- LPTSTR empty = TEXT("InputMethod");
+ LPCTSTR empty = TEXT("InputMethod");
AwtDialog *d = NULL;
PDATA pData;
--- a/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-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
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include "jlong.h"
#include "awt_DataTransferer.h"
#include "awt_DnDDS.h"
@@ -36,8 +37,6 @@
#include "sun_awt_dnd_SunDragSourceContextPeer.h"
#include "sun_awt_windows_WDragSourceContextPeer.h"
-#include <stdio.h>
-#include <stdlib.h>
#include <memory.h>
#include <shlobj.h>
--- a/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-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
@@ -30,11 +30,8 @@
#include "awt_Toolkit.h"
#include "java_awt_dnd_DnDConstants.h"
#include "sun_awt_windows_WDropTargetContextPeer.h"
-#include "awt_dlls.h"
#include "awt_Container.h"
-#include <stdio.h>
-#include <stdlib.h>
#include <memory.h>
#include <shellapi.h>
@@ -555,8 +552,7 @@
break;
}
case TYMED_FILE: {
- jobject local = JNU_NewStringPlatform(env, (LPCTSTR)
- stgmedium.lpszFileName);
+ jobject local = JNU_NewStringPlatform(env, stgmedium.lpszFileName);
jstring fileName = (jstring)env->NewGlobalRef(local);
env->DeleteLocalRef(local);
--- a/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -24,6 +24,8 @@
*/
#define _JNI_IMPLEMENTATION_
+
+#include "awt.h"
#include "awt_DrawingSurface.h"
#include "awt_Component.h"
--- a/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -27,7 +27,6 @@
#include "awt_FileDialog.h"
#include "awt_Dialog.h"
#include "awt_Toolkit.h"
-#include "awt_dlls.h"
#include "ComCtl32Util.h"
#include <commdlg.h>
#include <cderr.h>
@@ -65,7 +64,7 @@
{
int length = env->GetStringLength(filterDescription);
DASSERT(length + 1 < MAX_FILTER_STRING);
- LPCTSTR tmp = (LPTSTR)JNU_GetStringPlatformChars(env, filterDescription, NULL);
+ LPCTSTR tmp = JNU_GetStringPlatformChars(env, filterDescription, NULL);
_tcscpy(s_fileFilterString, tmp);
JNU_ReleaseStringPlatformChars(env, filterDescription, tmp);
@@ -156,7 +155,7 @@
LPITEMIDLIST pidl = (LPITEMIDLIST)notifyEx->pidl;
// Get the filename and directory
TCHAR szPath[MAX_PATH];
- if (!get_path_from_idlist(pidl,szPath)) {
+ if (!::SHGetPathFromIDList(pidl, szPath)) {
return TRUE;
}
jstring strPath = JNU_NewStringPlatform(env, szPath);
@@ -190,7 +189,7 @@
WCHAR unicodeChar = L' ';
LPTSTR fileBuffer = NULL;
LPTSTR currentDirectory = NULL;
- AWTOPENFILENAME ofn;
+ OPENFILENAME ofn;
jint mode = 0;
BOOL result = FALSE;
DWORD dlgerr;
@@ -222,7 +221,7 @@
HWND hwndOwner = awtParent ? awtParent->GetHWnd() : NULL;
if (title == NULL || env->GetStringLength(title)==0) {
- title = env->NewString(&unicodeChar, 1);
+ title = JNU_NewStringPlatform(env, &unicodeChar);
}
JavaStringBuffer titleBuffer(env, title);
@@ -243,14 +242,7 @@
memset(&ofn, 0, sizeof(ofn));
- // According to the MSDN docs, lStructSize must be set to
- // OPENFILENAME_SIZE_VERSION_400 on NT4.0.
- if (IS_NT && !(IS_WIN2000)) {
- ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
- }
- else {
ofn.lStructSize = sizeof(ofn);
- }
ofn.lpstrFilter = s_fileFilterString;
ofn.nFilterIndex = 1;
/*
@@ -289,9 +281,6 @@
mode = env->GetIntField(target, AwtFileDialog::modeID);
- // Fix for 4364256 : call load_shell_procs()
- load_shell_procs();
-
AwtDialog::CheckInstallModalHook();
// show the Win32 file dialog
@@ -304,7 +293,7 @@
// If the dialog is not shown because of invalid file name
// replace the file name by empty string.
if (!result) {
- dlgerr = AwtCommDialog::CommDlgExtendedError();
+ dlgerr = ::CommDlgExtendedError();
if (dlgerr == FNERR_INVALIDFILENAME) {
_tcscpy(fileBuffer, TEXT(""));
if (mode == java_awt_FileDialog_LOAD) {
@@ -326,7 +315,7 @@
// Report result to peer.
if (result) {
jstring tmpJString = (_tcslen(ofn.lpstrFile) == 0 ?
- env->NewStringUTF("") :
+ JNU_NewStringPlatform(env, L"") :
JNU_NewStringPlatform(env, ofn.lpstrFile));
env->CallVoidMethod(peer, AwtFileDialog::handleSelectedMID, tmpJString);
env->DeleteLocalRef(tmpJString);
@@ -362,20 +351,18 @@
}
BOOL
-AwtFileDialog::GetOpenFileName(LPAWTOPENFILENAME data) {
- AwtCommDialog::load_comdlg_procs();
+AwtFileDialog::GetOpenFileName(LPOPENFILENAME data) {
return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
AwtToolkit::GetInstance().InvokeFunction((void*(*)(void*))
- AwtCommDialog::GetOpenFileNameWrapper, data)));
+ ::GetOpenFileName, data)));
}
BOOL
-AwtFileDialog::GetSaveFileName(LPAWTOPENFILENAME data) {
- AwtCommDialog::load_comdlg_procs();
+AwtFileDialog::GetSaveFileName(LPOPENFILENAME data) {
return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
AwtToolkit::GetInstance().InvokeFunction((void *(*)(void *))
- AwtCommDialog::GetSaveFileNameWrapper, data)));
+ ::GetSaveFileName, data)));
}
--- a/jdk/src/windows/native/sun/windows/awt_FileDialog.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_FileDialog.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-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
@@ -36,43 +36,6 @@
#include "java_awt_FileDialog.h"
#include "sun_awt_windows_WFileDialogPeer.h"
-// The VC6 headers don't include this, but it's necessary for
-// backward-compatibility with NT4.0, so we fake it.
-#ifndef OPENFILENAME_SIZE_VERSION_400
- // Determined via sizeof(OPENFILENAME)
- #define OPENFILENAME_SIZE_VERSION_400 76
-#endif
-
-// 4859390
-// For the Places Bar to show up, we need the "full" OPENFILENAME struct
-typedef struct tagAWTOFN {
- DWORD lStructSize;
- HWND hwndOwner;
- HINSTANCE hInstance;
- LPCTSTR lpstrFilter;
- LPTSTR lpstrCustomFilter;
- DWORD nMaxCustFilter;
- DWORD nFilterIndex;
- LPTSTR lpstrFile;
- DWORD nMaxFile;
- LPTSTR lpstrFileTitle;
- DWORD nMaxFileTitle;
- LPCTSTR lpstrInitialDir;
- LPCTSTR lpstrTitle;
- DWORD Flags;
- WORD nFileOffset;
- WORD nFileExtension;
- LPCTSTR lpstrDefExt;
- LPARAM lCustData;
- LPOFNHOOKPROC lpfnHook;
- LPCTSTR lpTemplateName;
-//#if (_WIN32_WINNT >= 0x0500)
- void * pvReserved;
- DWORD dwReserved;
- DWORD FlagsEx;
-//#endif // (_WIN32_WINNT >= 0x0500)
-} AWTOPENFILENAME, *LPAWTOPENFILENAME;
-
/************************************************************************
* AwtFileDialog class
*/
@@ -96,8 +59,8 @@
static void Initialize(JNIEnv *env, jstring filterDescription);
static void Show(void *peer);
- static BOOL GetOpenFileName(LPAWTOPENFILENAME);
- static BOOL GetSaveFileName(LPAWTOPENFILENAME);
+ static BOOL GetOpenFileName(LPOPENFILENAME);
+ static BOOL GetSaveFileName(LPOPENFILENAME);
virtual BOOL InheritsNativeMouseWheelBehavior();
--- a/jdk/src/windows/native/sun/windows/awt_Font.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Font.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include <math.h>
#include "jlong.h"
#include "awt_Font.h"
@@ -195,7 +196,7 @@
}
// Get suitable CHARSET from charset string provided by font configuration.
-static int GetNativeCharset(WCHAR* name)
+static int GetNativeCharset(LPCWSTR name)
{
if (wcsstr(name, L"ANSI_CHARSET"))
return ANSI_CHARSET;
@@ -259,7 +260,7 @@
cfnum = 0;
}
- WCHAR* wName;
+ LPCWSTR wName;
awtFont = new AwtFont(cfnum, env, font);
@@ -269,9 +270,7 @@
if (cfnum > 0) {
// Ask peer class for the text component font name
jstring jTextComponentFontName = GetTextComponentFontName(env, font);
- WCHAR* textComponentFontName = TO_WSTRING(jTextComponentFontName);
-
- env->DeleteLocalRef(jTextComponentFontName);
+ LPCWSTR textComponentFontName = JNU_GetStringPlatformChars(env, jTextComponentFontName, NULL);
awtFont->m_textInput = -1;
for (int i = 0; i < cfnum; i++) {
@@ -282,13 +281,13 @@
jstring nativeName =
(jstring)env->GetObjectField(fontDescriptor,
AwtFont::nativeNameID);
- wName = TO_WSTRING(nativeName);
+ wName = JNU_GetStringPlatformChars(env, nativeName, NULL);
DASSERT(wName);
//On NT platforms, if the font is not Symbol or Dingbats
//use "W" version of Win32 APIs directly, info the FontDescription
//no need to convert characters from Unicode to locale encodings.
- if (IS_NT && GetNativeCharset(wName) != SYMBOL_CHARSET) {
+ if (GetNativeCharset(wName) != SYMBOL_CHARSET) {
env->SetBooleanField(fontDescriptor, AwtFont::useUnicodeID, TRUE);
}
@@ -299,10 +298,12 @@
(wcscmp(wName, textComponentFontName) == 0)) {
awtFont->m_textInput = i;
}
- HFONT hfonttmp = CreateHFont(wName, fontStyle, fontSize,
+ HFONT hfonttmp = CreateHFont(const_cast<LPWSTR>(wName), fontStyle, fontSize,
angle, awScale);
awtFont->m_hFont[i] = hfonttmp;
+ JNU_ReleaseStringPlatformChars(env, nativeName, wName);
+
env->DeleteLocalRef(fontDescriptor);
env->DeleteLocalRef(nativeName);
}
@@ -311,11 +312,14 @@
// to first component
awtFont->m_textInput = 0;
}
+
+ JNU_ReleaseStringPlatformChars(env, jTextComponentFontName, textComponentFontName);
+ env->DeleteLocalRef(jTextComponentFontName);
} else {
// Instantiation for English version.
jstring fontName = (jstring)env->GetObjectField(font,
AwtFont::nameID);
- wName = TO_WSTRING(fontName);
+ wName = JNU_GetStringPlatformChars(env, fontName, NULL);
WCHAR* wEName;
if (!wcscmp(wName, L"Helvetica") || !wcscmp(wName, L"SansSerif")) {
@@ -338,6 +342,9 @@
awtFont->m_textInput = 0;
awtFont->m_hFont[0] = CreateHFont(wEName, fontStyle, fontSize,
angle, awScale);
+
+ JNU_ReleaseStringPlatformChars(env, fontName, wName);
+
env->DeleteLocalRef(fontName);
}
/* The several callers of this method also set the pData field.
@@ -381,7 +388,7 @@
}
-static HFONT CreateHFont_sub(WCHAR* name, int style, int height,
+static HFONT CreateHFont_sub(LPCWSTR name, int style, int height,
int angle=0, float awScale=1.0f)
{
LOGFONTW logFont;
@@ -420,18 +427,7 @@
strip_tail(tmpname,L"Italic");
strip_tail(tmpname,L"Bold");
wcscpy(&(logFont.lfFaceName[0]), tmpname);
- HFONT hFont;
- if (IS_WIN95) {
-#ifdef WIN32
- DASSERT(IS_WIN95);
-#endif
- HDC hdc = ::GetDC(NULL);
- ::EnumFontFamiliesEx(hdc, &logFont, (FONTENUMPROC)FindFamilyName,
- (LPARAM)tmpname, 0L);
- ::ReleaseDC(NULL, hdc);
- wcscpy(&logFont.lfFaceName[0], tmpname);
- }
- hFont = ::CreateFontIndirectW(&logFont);
+ HFONT hFont = ::CreateFontIndirect(&logFont);
DASSERT(hFont != NULL);
// get a expanded or condensed version if its specified.
if (awScale != 1.0f) {
@@ -446,7 +442,7 @@
}
avgWidth = tm.tmAveCharWidth;
logFont.lfWidth = (LONG)((fabs)(avgWidth*awScale));
- hFont = CreateFontIndirectW(&logFont);
+ hFont = ::CreateFontIndirect(&logFont);
DASSERT(hFont != NULL);
VERIFY(::ReleaseDC(0, hDC));
}
@@ -460,15 +456,8 @@
WCHAR longName[80];
// 80 > (max face name(=30) + strlen("CHINESEBIG5_CHARSET"))
// longName doesn't have to be printable. So, it is OK not to convert.
- if (IS_NT) {
- //wsprintfW only works on NT. See bugid 4123362
- wsprintfW(longName, L"%ls-%d-%d", name, style, height);
- } else {
-#ifdef WIN32
- DASSERT(IS_WIN95);
-#endif
- swprintf(longName, L"%ls-%d-%d", name, style, height);
- }
+
+ wsprintf(longName, L"%ls-%d-%d", name, style, height);
HFONT hFont = NULL;
@@ -682,28 +671,16 @@
if (arrayLength == 0) {
int length = env->GetStringLength(str);
- WCHAR* string = TO_WSTRING(str);
+ LPCWSTR strW = JNU_GetStringPlatformChars(env, str, NULL);
VERIFY(::SelectObject(hDC, awtFont->GetHFont()));
if (AwtComponent::GetRTLReadingOrder()){
- if (IS_WIN95) {
- // Start of conversion Code to fix arabic shaping problems
- // with unicode support in win 95
- LPSTR buffer = (LPSTR) alloca((wcslen(string) + 1) * 2);
- int count = ::WideCharToMultiByte(codePage, 0, string, length,
- buffer,
- static_cast<int>((wcslen(string) + 1) * 2),
- NULL, NULL);
- VERIFY(!draw || ::ExtTextOutA(hDC, x, y, ETO_RTLREADING, NULL,
- buffer, count, NULL));
- // End Of Conversion Code
- } else {
- VERIFY(!draw || ::ExtTextOutW(hDC, x, y, ETO_RTLREADING, NULL,
- string, length, NULL));
- }
+ VERIFY(!draw || ::ExtTextOut(hDC, x, y, ETO_RTLREADING, NULL,
+ strW, length, NULL));
} else {
- VERIFY(!draw || ::TextOutW(hDC, x, y, string, length));
+ VERIFY(!draw || ::TextOut(hDC, x, y, strW, length));
}
- VERIFY(::GetTextExtentPoint32W(hDC, string, length, &size));
+ VERIFY(::GetTextExtentPoint32(hDC, strW, length, &size));
+ JNU_ReleaseStringPlatformChars(env, str, strW);
} else {
for (int i = 0; i < arrayLength; i = i + 2) {
jobject fontDescriptor = env->GetObjectArrayElement(array, i);
@@ -732,7 +709,7 @@
* extend buflen and bad things will happen.
*/
unsigned char* buffer = NULL;
- jboolean unicodeUsed = env->GetBooleanField(fontDescriptor,AwtFont::useUnicodeID);
+ jboolean unicodeUsed = env->GetBooleanField(fontDescriptor, AwtFont::useUnicodeID);
try {
buffer = (unsigned char *)
env->GetPrimitiveArrayCritical(convertedBytes, 0);
@@ -1231,7 +1208,7 @@
public:
CSegTableComponent();
virtual ~CSegTableComponent();
- virtual void Create(LPWSTR name);
+ virtual void Create(LPCWSTR name);
virtual BOOL In(USHORT iChar) { DASSERT(FALSE); return FALSE; };
LPWSTR GetFontName(){
DASSERT(m_lpszFontName != NULL); return m_lpszFontName;
@@ -1254,7 +1231,7 @@
}
}
-void CSegTableComponent::Create(LPWSTR name)
+void CSegTableComponent::Create(LPCWSTR name)
{
if (m_lpszFontName != NULL) {
free(m_lpszFontName);
@@ -1453,7 +1430,7 @@
CStdSegTable();
virtual ~CStdSegTable();
BOOL IsEUDC() { return FALSE; };
- virtual void Create(LPWSTR name);
+ virtual void Create(LPCWSTR name);
protected:
void GetData(DWORD dwOffset, LPVOID lpData, DWORD cbData);
@@ -1481,7 +1458,7 @@
DASSERT(nBytes != GDI_ERROR);
}
-void CStdSegTable::Create(LPWSTR name)
+void CStdSegTable::Create(LPCWSTR name)
{
CSegTableComponent::Create(name);
@@ -1509,7 +1486,7 @@
CEUDCSegTable();
virtual ~CEUDCSegTable();
BOOL IsEUDC() { return TRUE; };
- virtual void Create(LPWSTR name);
+ virtual void Create(LPCWSTR name);
protected:
void GetData(DWORD dwOffset, LPVOID lpData, DWORD cbData);
@@ -1543,7 +1520,7 @@
DASSERT(dwRead == cbData);
}
-void CEUDCSegTable::Create(LPWSTR name)
+void CEUDCSegTable::Create(LPCWSTR name)
{
typedef struct tagHEAD{
FIXED sfnt_version;
@@ -1564,19 +1541,8 @@
// create EUDC font file and make EUDCSegTable
// after wrapper function for CreateFileW, we use only CreateFileW
- if (IS_NT) {
- m_hTmpFile = ::CreateFileW(name, GENERIC_READ,
- FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- } else {
-#ifdef WIN32
- DASSERT(IS_WIN95);
-#endif
- char szFileName[_MAX_PATH];
- ::WideCharToMultiByte(CP_ACP, 0, name, -1,
- szFileName, sizeof(szFileName), NULL, NULL);
- m_hTmpFile = ::CreateFileA(szFileName, GENERIC_READ,
- FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- }
+ m_hTmpFile = ::CreateFile(name, GENERIC_READ,
+ FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (m_hTmpFile == INVALID_HANDLE_VALUE){
m_hTmpFile = NULL;
return;
@@ -1654,10 +1620,10 @@
class CSegTableManager : public CSegTableManagerComponent
{
public:
- CSegTable* GetTable(LPWSTR lpszFontName, BOOL fEUDC);
+ CSegTable* GetTable(LPCWSTR lpszFontName, BOOL fEUDC);
};
-CSegTable* CSegTableManager::GetTable(LPWSTR lpszFontName, BOOL fEUDC)
+CSegTable* CSegTableManager::GetTable(LPCWSTR lpszFontName, BOOL fEUDC)
{
for (int i = 0; i < m_nTable; i++) {
if ((((CSegTable*)m_tables[i])->IsEUDC() == fEUDC) &&
@@ -1685,7 +1651,7 @@
{
public:
CCombinedSegTable();
- void Create(LPWSTR name);
+ void Create(LPCWSTR name);
BOOL In(USHORT iChar);
private:
@@ -1807,7 +1773,7 @@
wcscpy(m_szDefaultEUDCFile, lpszFileName);
}
-void CCombinedSegTable::Create(LPWSTR name)
+void CCombinedSegTable::Create(LPCWSTR name)
{
CSegTableComponent::Create(name);
@@ -1840,10 +1806,10 @@
class CCombinedSegTableManager : public CSegTableManagerComponent
{
public:
- CCombinedSegTable* GetTable(LPWSTR lpszFontName);
+ CCombinedSegTable* GetTable(LPCWSTR lpszFontName);
};
-CCombinedSegTable* CCombinedSegTableManager::GetTable(LPWSTR lpszFontName)
+CCombinedSegTable* CCombinedSegTableManager::GetTable(LPCWSTR lpszFontName)
{
for (int i = 0; i < m_nTable; i++) {
if (wcscmp(m_tables[i]->GetFontName(),lpszFontName) == 0)
@@ -1901,8 +1867,9 @@
jstring fontName = (jstring)env->GetObjectField(self, AwtFont::fontNameID);
DASSERT(fontName != NULL);
- LPWSTR fontNameWStr = TO_WSTRING(fontName);
- CCombinedSegTable* pTable = tableManager.GetTable(fontNameWStr);
+ LPCWSTR fontNameW = JNU_GetStringPlatformChars(env, fontName, NULL);
+ CCombinedSegTable* pTable = tableManager.GetTable(fontNameW);
+ JNU_ReleaseStringPlatformChars(env, fontName, fontNameW);
return (pTable->In((USHORT) ch) ? JNI_TRUE : JNI_FALSE);
CATCH_BAD_ALLOC_RET(FALSE);
--- a/jdk/src/windows/native/sun/windows/awt_Font.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Font.h Thu Feb 26 14:25:55 2009 -0800
@@ -28,7 +28,6 @@
#include "awt.h"
#include "awt_Object.h"
-#include "awt_Unicode.h"
#include "java_awt_Font.h"
#include "sun_awt_windows_WFontMetrics.h"
--- a/jdk/src/windows/native/sun/windows/awt_Frame.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Frame.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1472,7 +1472,7 @@
int badAlloc = 0;
LPCTSTR coption;
- LPTSTR empty = TEXT("InputMethod");
+ LPCTSTR empty = TEXT("InputMethod");
AwtFrame *f = NULL;
PDATA pData;
--- a/jdk/src/windows/native/sun/windows/awt_InputMethod.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_InputMethod.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-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
@@ -580,18 +580,10 @@
DWORD cbHKL = 16;
LPTSTR end;
- if (IS_NT) {
- ret = ::RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Preload"), NULL, KEY_READ, &hKey);
- } else {
- ret = ::RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("keyboard layout\\preload\\1"), NULL, KEY_READ, &hKey);
- }
+ ret = ::RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Preload"), NULL, KEY_READ, &hKey);
if (ret == ERROR_SUCCESS) {
- if (IS_NT) {
- ret = ::RegQueryValueEx(hKey, TEXT("1"), 0, 0, szHKL, &cbHKL);
- } else {
- ret = ::RegQueryValueEx(hKey, NULL, 0, 0, szHKL, &cbHKL);
- }
+ ret = ::RegQueryValueEx(hKey, TEXT("1"), 0, 0, szHKL, &cbHKL);
if (ret == ERROR_SUCCESS) {
hkl = reinterpret_cast<HKL>(static_cast<INT_PTR>(
--- a/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-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
@@ -22,10 +22,9 @@
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
-#include <windows.h>
-#include <jni.h>
+
+#include "awt.h"
#include <imm.h>
-#include "awt.h"
#include "awt_Component.h"
#include "awt_InputTextInfor.h"
@@ -91,12 +90,12 @@
LONG cbData[5] = {0};
LPVOID lpData[5] = {NULL};
for (int i = startIndex, j = 0; i <= endIndex; i++, j++) {
- cbData[j] = ImmGetCompositionStringW(hIMC, GCS_INDEX[i], NULL, 0);
+ cbData[j] = ::ImmGetCompositionString(hIMC, GCS_INDEX[i], NULL, 0);
if (cbData[j] == 0) {
lpData[j] = NULL;
} else {
LPBYTE lpTemp = new BYTE[cbData[j]];
- cbData[j] = ImmGetCompositionStringW(hIMC, GCS_INDEX[i], lpTemp, cbData[j]);
+ cbData[j] = ::ImmGetCompositionString(hIMC, GCS_INDEX[i], lpTemp, cbData[j]);
if (IMM_ERROR_GENERAL != cbData[j]) {
lpData[j] = (LPVOID)lpTemp;
} else {
@@ -126,7 +125,7 @@
// Get the cursor position
if (flags & GCS_COMPSTR) {
- m_cursorPosW = ImmGetCompositionStringW(hIMC, GCS_CURSORPOS,
+ m_cursorPosW = ::ImmGetCompositionString(hIMC, GCS_CURSORPOS,
NULL, 0);
}
@@ -185,9 +184,11 @@
jstring AwtInputTextInfor::MakeJavaString(JNIEnv* env, LPWSTR lpStrW, int cStrW) {
- if (env == NULL || lpStrW == NULL || cStrW == 0) return NULL;
-
- return env->NewString(lpStrW, cStrW);
+ if (env == NULL || lpStrW == NULL || cStrW == 0) {
+ return NULL;
+ } else {
+ return env->NewString(reinterpret_cast<jchar*>(lpStrW), cStrW);
+ }
}
//
@@ -232,7 +233,7 @@
LCID lcJPN = MAKELCID(MAKELANGID(LANG_JAPANESE,SUBLANG_DEFAULT),SORT_DEFAULT);
// Reading string is given in half width katakana in Japanese Windows
// Convert it to full width katakana.
- int cFWStrW = LCMapStringW( lcJPN, LCMAP_FULLWIDTH, lpHWStrW, cHWStrW, NULL, 0 );
+ int cFWStrW = ::LCMapString(lcJPN, LCMAP_FULLWIDTH, lpHWStrW, cHWStrW, NULL, 0);
LPWSTR lpFWStrW;
try {
lpFWStrW = new WCHAR[cFWStrW];
@@ -244,7 +245,7 @@
throw;
}
- LCMapStringW( lcJPN, LCMAP_FULLWIDTH, lpHWStrW, cHWStrW, lpFWStrW, cFWStrW );
+ ::LCMapString(lcJPN, LCMAP_FULLWIDTH, lpHWStrW, cHWStrW, lpFWStrW, cFWStrW);
readingClauseW[cls] = MakeJavaString(env, lpFWStrW, cFWStrW);
delete [] lpFWStrW;
} else {
@@ -252,7 +253,7 @@
}
}
else {
- readingClauseW[cls] = MakeJavaString(env, (LPWSTR)NULL, 0);
+ readingClauseW[cls] = NULL;
}
}
--- a/jdk/src/windows/native/sun/windows/awt_List.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_List.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -27,7 +27,6 @@
#include "awt_KeyboardFocusManager.h"
#include "awt_Canvas.h"
#include "awt_Dimension.h"
-#include "awt_Unicode.h"
#include "awt_Toolkit.h"
#include "awt_Window.h"
@@ -112,9 +111,8 @@
DWORD wrapExStyle = 0;
DWORD style = WS_CHILD | WS_CLIPSIBLINGS | WS_VSCROLL | WS_HSCROLL |
- LBS_NOINTEGRALHEIGHT | LBS_NOTIFY | LBS_OWNERDRAWFIXED |
- (IS_WIN4X ? 0 : WS_BORDER);
- DWORD exStyle = IS_WIN4X ? WS_EX_CLIENTEDGE : 0;
+ LBS_NOINTEGRALHEIGHT | LBS_NOTIFY | LBS_OWNERDRAWFIXED;
+ DWORD exStyle = WS_EX_CLIENTEDGE;
/*
* NOTE: WS_VISIBLE is always set for the listbox. Listbox
@@ -571,10 +569,10 @@
// operate WM_PRINT to be compatible with the "smooth scrolling" feature.
MsgRouting AwtList::WmPrint(HDC hDC, LPARAM flags)
{
- if (!isWrapperPrint && IS_WIN4X
- && (flags & PRF_CLIENT)
- && (GetStyleEx() & WS_EX_CLIENTEDGE)) {
-
+ if (!isWrapperPrint &&
+ (flags & PRF_CLIENT) &&
+ (GetStyleEx() & WS_EX_CLIENTEDGE))
+ {
int nOriginalDC = ::SaveDC(hDC);
DASSERT(nOriginalDC != 0);
// Save a copy of the DC for WmPrintClient
--- a/jdk/src/windows/native/sun/windows/awt_MMStub.cpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,573 +0,0 @@
-/*
- * Copyright 1999-2003 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 "awt_MMStub.h"
-
-//---------------------------------------------------------------------------
-// Basic API
-//---------------------------------------------------------------------------
-
-int (WINAPI* g_pfnGetSystemMetrics) (int);
-MHND (WINAPI* g_pfnMonitorFromWindow) (HWND,BOOL);
-MHND (WINAPI* g_pfnMonitorFromRect) (LPCRECT,BOOL);
-MHND (WINAPI* g_pfnMonitorFromPoint) (POINT,BOOL);
-BOOL (WINAPI* g_pfnGetMonitorInfo) (MHND,PMONITOR_INFO);
-BOOL (WINAPI* g_pfnEnumDisplayMonitors) (HDC,LPCRECT,MON_ENUM_CALLBACK_PROC,LPARAM);
-BOOL (WINAPI* g_pfnEnumDisplayDevices) (LPVOID,int,P_DISPLAY_DEVICE,DWORD);
-
-BOOL __initMultipleMonitorStubs(void);
-BOOL __initMultipleMonitorStubs(void)
-{
- static BOOL fInitDone;
- HMODULE hUser32;
- HMODULE hUnicows = UnicowsLoader::GetModuleHandle();
- BOOL retCode = FALSE;
-
- if (fInitDone)
- {
- retCode = g_pfnGetMonitorInfo != NULL;
- goto _RET_;
- }
-
- if ((hUser32 = GetModuleHandle(TEXT("USER32"))) &&
- (*(FARPROC*)&g_pfnGetSystemMetrics = GetProcAddress(hUser32,"GetSystemMetrics")) &&
- (*(FARPROC*)&g_pfnMonitorFromWindow = GetProcAddress(hUser32,"MonitorFromWindow")) &&
- (*(FARPROC*)&g_pfnMonitorFromRect = GetProcAddress(hUser32,"MonitorFromRect")) &&
- (*(FARPROC*)&g_pfnMonitorFromPoint = GetProcAddress(hUser32,"MonitorFromPoint")) &&
- (*(FARPROC*)&g_pfnEnumDisplayMonitors = GetProcAddress(hUser32,"EnumDisplayMonitors")) &&
- (*(FARPROC*)&g_pfnGetMonitorInfo = GetProcAddress(IS_WIN95 ? hUnicows : hUser32,"GetMonitorInfoW")) &&
- (*(FARPROC*)&g_pfnEnumDisplayDevices = GetProcAddress(IS_WIN95 ? hUnicows : hUser32,"EnumDisplayDevicesW")) &&
- (GetSystemMetrics(SM_CXVSCREEN) >= GetSystemMetrics(SM_CXSCREEN)) &&
- (GetSystemMetrics(SM_CYVSCREEN) >= GetSystemMetrics(SM_CYSCREEN)) )
- {
- fInitDone = TRUE;
- retCode = TRUE;
- goto _RET_;
- }
- g_pfnGetSystemMetrics = NULL;
- g_pfnMonitorFromWindow = NULL;
- g_pfnMonitorFromRect = NULL;
- g_pfnMonitorFromPoint = NULL;
- g_pfnGetMonitorInfo = NULL;
- g_pfnEnumDisplayMonitors = NULL;
- g_pfnEnumDisplayDevices = NULL;
-
- fInitDone = TRUE;
- retCode = FALSE;
-
-_RET_:
- return retCode;
-}
-
-int WINAPI _getSystemMetrics(int nCode)
-{
- int retCode;
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnGetSystemMetrics(nCode);
- goto _RET_;
- }
-
- switch( nCode )
- {
- case SM_CMONITORS:
- case SM_SAMEDSPLFORMAT:
- return 1;
-
- case SM_XVSCREEN:
- case SM_YVSCREEN:
- return 0;
-
- case SM_CXVSCREEN:
- nCode = SM_CXSCREEN;
- break;
-
- case SM_CYVSCREEN:
- nCode = SM_CYSCREEN;
- break;
- }
-
- retCode = GetSystemMetrics(nCode);
-_RET_:
- return retCode;
-}
-
-
-MHND WINAPI _monitorFromRect(LPCRECT prScreen, UINT nFlags)
-{
- MHND retCode = NULL;
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnMonitorFromRect(prScreen, nFlags);
- goto _RET_;
- }
-
- if( (prScreen->right < 0) || (prScreen->bottom < 0) )
- {
- goto _RET_;
- }
- {
- POINT pP = {0,0};
-
- pP.x = prScreen->left;
- pP.y = prScreen->top;
-
- retCode = _monitorFromPoint(pP,nFlags);
- }
-
-_RET_:
- return retCode;
-}
-
-MHND WINAPI _monitorFromWindow(HWND hwProbe, UINT nFlags)
-{
- RECT rR;
- MHND retCode = NULL;
-
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnMonitorFromWindow(hwProbe, nFlags);
- goto _RET_;
- }
-
- if( nFlags & (MONITOR_DEFAULT_TO_PRIMARY | MONITOR_DEFAULT_TO_NEAR) )
- {
- retCode = PRIMARY_MONITOR;
- goto _RET_;
- }
-
- if( GetWindowRect(hwProbe, &rR) )
- {
- retCode = _monitorFromRect(&rR, nFlags);
- goto _RET_;
- }
-
-_RET_:
- return retCode;
-}
-
-MHND WINAPI _monitorFromPoint(POINT ptProbe, UINT nFlags)
-{
- MHND retCode = NULL;
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnMonitorFromPoint(ptProbe,nFlags);
- goto _RET_;
- }
-
- if( nFlags & (MONITOR_DEFAULT_TO_PRIMARY | MONITOR_DEFAULT_TO_NEAR) )
- {
- goto _ASSIGN_;
- }
-
- if( (ptProbe.x <= 0) || (ptProbe.x > GetSystemMetrics(SM_CXSCREEN)) )
- {
- goto _RET_;
- }
-
- if( (ptProbe.y <= 0) || (ptProbe.y < GetSystemMetrics(SM_CYSCREEN)) )
- {
- goto _RET_;
- }
-_ASSIGN_:
- retCode = PRIMARY_MONITOR;
-
-_RET_:
- return retCode;
-}
-
-BOOL WINAPI _getMonitorInfo(MHND mhMon, PMONITOR_INFO pmMonInfo)
-{
- RECT rArea;
- BOOL retCode = FALSE;
-
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnGetMonitorInfo(mhMon, pmMonInfo);
- goto _RET_;
- }
-
- if( mhMon != PRIMARY_MONITOR )
- {
- goto _RET_;
- }
-
- if( NULL == pmMonInfo )
- {
- goto _RET_;
- }
-
- if( FALSE == SystemParametersInfo(SPI_GETWORKAREA,0,&rArea,0) )
- {
- goto _RET_;
- }
-
- if( pmMonInfo->dwSize >= sizeof(MONITOR_INFO) )
- {
- pmMonInfo->rMonitor.left = 0;
- pmMonInfo->rMonitor.top = 0;
- pmMonInfo->rMonitor.right = GetSystemMetrics(SM_CXSCREEN);
- pmMonInfo->rMonitor.bottom = GetSystemMetrics(SM_CYSCREEN);
- pmMonInfo->rWork = rArea;
- pmMonInfo->dwFlags = MONITOR_INFO_FLAG_PRIMARY;
-
- if( pmMonInfo->dwSize >= sizeof(MONITOR_INFO_EXTENDED))
- {
- lstrcpy(((PMONITOR_INFO_EXTENDED)pmMonInfo)->strDevice,
- TEXT("DISPLAY") );
- }
-
- retCode = TRUE;
- }
-
-_RET_:
- return retCode;
-}
-
-BOOL WINAPI _enumDisplayMonitors(
- HDC hDC,LPCRECT lrcSect,
- MON_ENUM_CALLBACK_PROC lpfnEnumProc,
- LPARAM lData
- )
-{
- BOOL retCode = FALSE;
- RECT rToPass = {0,0,0,0};
- RECT rBorder = {0,0,0,0};
-
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnEnumDisplayMonitors (
- hDC, lrcSect,
- lpfnEnumProc,lData
- );
- goto _RET_;
- }
-
- if( !lpfnEnumProc )
- {
- goto _RET_;
- }
-
- rBorder.left = 0;
- rBorder.top = 0;
- rBorder.right = GetSystemMetrics(SM_CXSCREEN);
- rBorder.bottom = GetSystemMetrics(SM_CYSCREEN);
-
- if( hDC )
- {
- RECT rSect = {0,0,0,0};
- HWND hWnd = NULL;
-
- if( NULL == (hWnd = WindowFromDC(hDC)) )
- {
- goto _RET_;
- }
-
- switch( GetClipBox(hDC,&rSect) )
- {
- case NULLREGION:
- goto _ASSIGN_;
- case ERROR:
- goto _RET_;
- default:
- MapWindowPoints(NULL, hWnd, (LPPOINT)&rBorder, 2);
- if( TRUE == IntersectRect(&rToPass,&rSect,&rBorder) )
- {
- break;
- }
- }
-
- rBorder = rToPass;
- }
-
- if( (NULL == lrcSect) || (TRUE == IntersectRect(&rToPass,lrcSect,&rBorder)) )
- {
- lpfnEnumProc(PRIMARY_MONITOR,hDC,&rToPass,lData);
- }
-_ASSIGN_:
- retCode = TRUE;
-_RET_:
- return retCode;
-}
-
-BOOL WINAPI _enumDisplayDevices (
- LPVOID lpReserved, int iDeviceNum,
- _DISPLAY_DEVICE * pDisplayDevice, DWORD dwFlags
- )
-{
- BOOL retCode = FALSE;
- if( __initMultipleMonitorStubs() )
- {
- retCode = g_pfnEnumDisplayDevices(lpReserved,iDeviceNum,pDisplayDevice,dwFlags);
- }
-
- return retCode;
-}
-
-
-//---------------------------------------------------------------------------
-// Extended API.
-//---------------------------------------------------------------------------
-// Globais
-int g_nMonitorCounter;
-int g_nMonitorLimit;
-MHND* g_hmpMonitors;
-// Callbacks
-BOOL WINAPI clb_fCountMonitors(MHND,HDC,LPRECT,LPARAM);
-BOOL WINAPI clb_fCountMonitors(MHND hMon,HDC hDC,LPRECT rRect,LPARAM lP)
-{
- g_nMonitorCounter ++;
- return TRUE;
-}
-BOOL WINAPI clb_fCollectMonitors(MHND,HDC,LPRECT,LPARAM);
-BOOL WINAPI clb_fCollectMonitors(MHND hMon,HDC hDC,LPRECT rRect,LPARAM lP)
-{
-
- if( (g_nMonitorCounter < g_nMonitorLimit) && (NULL != g_hmpMonitors) )
- {
- g_hmpMonitors[g_nMonitorCounter] = hMon;
- g_nMonitorCounter ++;
- }
-
- return TRUE;
-}
-// Tools
-void __normaRectPos(RECT*,RECT,RECT);
-HWND __createWindow0(MHND,LPCTSTR,LPCTSTR,DWORD,int,int,int,int,HWND,HMENU,HANDLE,LPVOID);
-HWND __createWindow1(MHND,LPCTSTR,LPCTSTR,DWORD,int,int,int,int,HWND,HMENU,HANDLE,LPVOID);
-void __normaRectPos(RECT* rDest,RECT rSrc,RECT rNorma)
-{
- int nDX = rSrc.right - rSrc.left;
- int nDY = rSrc.bottom - rSrc.top;
-
- rDest->left = rSrc.left + rNorma.left;
- rDest->top = rSrc.top + rNorma.top;
-
- rDest->right = rDest->left + nDX;
- rDest->bottom = rDest->top + nDY;
-}
-HWND __createWindow0( MHND hmMonitor,LPCTSTR lpClassName,LPCTSTR lpWindowName,
- DWORD dwStyle,int x,int y,int nWidth,
- int nHeight,HWND hWndParent,HMENU hMenu,
- HANDLE hInstance,LPVOID lpParam )
-{
- HWND retCode = NULL;
-
- if( (NULL != hmMonitor) && (NULL != lpClassName) &&
- (NULL != lpWindowName) && (NULL != hInstance) )
- {
- RECT rRW = {0,0,0,0};
- RECT rRM = {0,0,0,0};
- RECT rSect = {0,0,0,0};
-
- SetRect(&rRW,x,y,x+nWidth,y+nHeight);
-
- if( TRUE == _monitorBounds(hmMonitor,&rRM) )
- {
- __normaRectPos(&rRW,rRW,rRM);
-
- IntersectRect(&rSect,&rRM,&rRW);
-
- if( TRUE == EqualRect(&rSect,&rRW) )
- {
- x = rSect.left;
- y = rSect.top;
- nWidth = rSect.right - rSect.left;
- nHeight = rSect.bottom - rSect.top;
- retCode = CreateWindow(
- lpClassName,lpWindowName,
- dwStyle,x,y,nWidth,
- nHeight,hWndParent,hMenu,
- (HINSTANCE)hInstance,lpParam
- );
- } else {
- // A coisa indefinida. Nao tenho sabdoria o que
- // fazer aqui mesmo
- // E necessario perguntar Jeannette
- }
- }
- }
-
- return retCode;
-}
-HWND __createWindow1( MHND hmMonitor,LPCTSTR lpClassName,LPCTSTR lpWindowName,
- DWORD dwStyle,int x,int y,int nWidth,
- int nHeight,HWND hWndParent,HMENU hMenu,
- HANDLE hInstance,LPVOID lpParam )
-{
- HWND retCode = NULL;
-
- if( (NULL != hmMonitor) && (NULL != lpClassName) &&
- (NULL != lpWindowName) && (NULL != hInstance) )
- {
- RECT rRM = {0,0,0,0};
-
- if( TRUE == _monitorBounds(hmMonitor,&rRM) )
- {
- HWND wW = NULL;
- BOOL wasVisible = (0 != (dwStyle & WS_VISIBLE));
-
- if( TRUE == wasVisible )
- {
- dwStyle &= ~WS_VISIBLE;
- }
-
- if( NULL != (wW = CreateWindow(
- lpClassName,lpWindowName,
- dwStyle,x,y,nWidth,
- nHeight,hWndParent,hMenu,
- (HINSTANCE)hInstance,lpParam
- )) )
- {
- RECT rRW = {0,0,0,0};
- RECT rSect = {0,0,0,0};
-
- GetWindowRect(wW,&rRW);
-
- __normaRectPos(&rRW,rRW,rRM);
-
- IntersectRect(&rSect,&rRM,&rRW);
-
- if( TRUE == EqualRect(&rSect,&rRW) )
- {
- x = rSect.left;
- y = rSect.top;
- nWidth = rSect.right - rSect.left;
- nHeight = rSect.bottom - rSect.top;
-
- MoveWindow(wW,x,y,nWidth,nHeight,FALSE);
-
- if( TRUE == wasVisible )
- {
- UpdateWindow(wW);
- ShowWindow(wW,SW_SHOW);
- }
-
- retCode = wW;
- } else {
- // A coisa indefinida. Nao sei o que
- // fazer aqui. E necessario perguntar Jeannette
- DestroyWindow(wW);
- }
- }
- }
- }
-
- return retCode;
-}
-
-// Implementations
-int WINAPI _countMonitors(void)
-{
- g_nMonitorCounter = 0;
-
- _enumDisplayMonitors(NULL,NULL,clb_fCountMonitors,0L);
-
- return g_nMonitorCounter;
-
-}
-int WINAPI _collectMonitors(MHND* hmpMonitors,int nNum)
-{
- int retCode = 0;
-
- if( NULL != hmpMonitors )
- {
- g_nMonitorCounter = 0;
- g_nMonitorLimit = nNum;
- g_hmpMonitors = hmpMonitors;
-
- _enumDisplayMonitors(NULL,NULL,clb_fCollectMonitors,0L);
-
- retCode = g_nMonitorCounter;
-
- g_nMonitorCounter = 0;
- g_nMonitorLimit = 0;
- g_hmpMonitors = NULL;
-
- }
- return retCode;
-}
-BOOL WINAPI _monitorBounds(MHND hmMonitor,RECT* rpBounds)
-{
- BOOL retCode = FALSE;
-
- if( (NULL != hmMonitor) && (NULL != rpBounds) )
- {
- MONITOR_INFO miInfo;
-
- memset((void*)(&miInfo),0,sizeof(MONITOR_INFO));
- miInfo.dwSize = sizeof(MONITOR_INFO);
-
- if( TRUE == (retCode = _getMonitorInfo(hmMonitor,&(miInfo))) )
- {
- (*rpBounds) = miInfo.rMonitor;
- }
- }
- return retCode;
-}
-
-HDC WINAPI _makeDCFromMonitor(MHND hmMonitor) {
- HDC retCode = NULL;
-
- if( NULL != hmMonitor ) {
-
- MONITOR_INFO_EXTENDED mieInfo;
-
- memset((void*)(&mieInfo),0,sizeof(MONITOR_INFO_EXTENDED));
- mieInfo.dwSize = sizeof(MONITOR_INFO_EXTENDED);
-
- if( TRUE == _getMonitorInfo(hmMonitor,(PMONITOR_INFO)(&mieInfo)) ) {
- HDC hDC = CreateDC(mieInfo.strDevice,NULL,NULL,NULL);
-
- if( NULL != hDC ) {
- retCode = hDC;
- }
- }
- }
- return retCode;
-}
-
-HWND WINAPI _createWindowOM( MHND hmMonitor,LPCTSTR lpClassName,LPCTSTR lpWindowName,
- DWORD dwStyle,int x,int y,int nWidth,
- int nHeight,HWND hWndParent,HMENU hMenu,
- HANDLE hInstance,LPVOID lpParam )
-{
- if( (CW_USEDEFAULT == x) || (CW_USEDEFAULT == y) ||
- (CW_USEDEFAULT == nWidth) || (CW_USEDEFAULT == nHeight) )
- {
- return __createWindow1 (
- hmMonitor,lpClassName,lpWindowName,
- dwStyle,x,y,nWidth,
- nHeight,hWndParent,hMenu,
- hInstance,lpParam
- );
- }
- return __createWindow0 (
- hmMonitor,lpClassName,lpWindowName,
- dwStyle,x,y,nWidth,
- nHeight,hWndParent,hMenu,
- hInstance,lpParam
- );
-}
--- a/jdk/src/windows/native/sun/windows/awt_MMStub.h Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- * Copyright 1999-2003 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 _INC_MMSTUB
-#define _INC_MMSTUB
-
-#ifndef _WINDOWS_
-#include "windows.h"
-#endif
-
-#ifndef _AWT_H_
-#include "awt.h"
-#endif
-
-#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500)
-
-/* Cdecl for C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Constants */
-#define SM_XVSCREEN 76
-#define SM_YVSCREEN 77
-#define SM_CXVSCREEN 78
-#define SM_CYVSCREEN 79
-#define SM_CMONITORS 80
-#define SM_SAMEDSPLFORMAT 81
-
-#define MONITOR_DEFAULT_TO_NULL 0x00000000
-#define MONITOR_DEFAULT_TO_PRIMARY 0x00000001
-#define MONITOR_DEFAULT_TO_NEAR 0x00000002
-
-
-
-#define MONITOR_INFO_FLAG_PRIMARY 0x00000001
-
-#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
-#define DISPLAY_DEVICE_MULTY_DRIVER 0x00000002
-#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004
-#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
-
-
-#define DISPLAY_DEVICE_VGA 0x00000010
-
-#define ENUM_CURRENT_SETTINGS ((DWORD)-1)
-#define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
-
-#define PRIMARY_MONITOR ((MHND)0x42)
-
-
-#define DEV_NAME_LEN 32
-#define DEV_STR_LEN 128
-
-
-// Datatypes
-typedef HANDLE MHND;
-typedef BOOL (CALLBACK* MON_ENUM_CALLBACK_PROC)(MHND,HDC,LPRECT,LPARAM);
-
-typedef struct tagMONITOR_INFO
-{
- DWORD dwSize;
- RECT rMonitor;
- RECT rWork;
- DWORD dwFlags;
-} MONITOR_INFO, *PMONITOR_INFO;
-
-typedef struct tagMONITOR_INFO_EXTENDED
-{
- DWORD dwSize;
- RECT rMonitor;
- RECT rWork;
- DWORD dwFlags;
- TCHAR strDevice[DEV_NAME_LEN];
-} MONITOR_INFO_EXTENDED, *PMONITOR_INFO_EXTENDED;
-
-typedef struct tagDISPLAY_DEVICE
-{
- DWORD dwSize;
- WCHAR strDevName[DEV_NAME_LEN];
- WCHAR strDevString[DEV_STR_LEN];
- DWORD dwFlags;
- WCHAR deviceID[128];
- WCHAR deviceKey[128];
-} _DISPLAY_DEVICE, *P_DISPLAY_DEVICE;
-
-/* Basic API's */
-BOOL WINAPI _enumDisplayMonitors(HDC,LPCRECT,MON_ENUM_CALLBACK_PROC,LPARAM);
-BOOL WINAPI _enumDisplayDevices (LPVOID,int,P_DISPLAY_DEVICE,DWORD);
-BOOL WINAPI _getMonitorInfo (MHND,PMONITOR_INFO);
-MHND WINAPI _monitorFromPoint (POINT,UINT);
-MHND WINAPI _monitorFromWindow (HWND,UINT);
-MHND WINAPI _monitorFromRect (LPCRECT,UINT);
-int WINAPI _getSystemMetrics (int);
-
-/* Additional API's */
-int WINAPI _countMonitors (void);
-int WINAPI _collectMonitors (MHND*,int);
-BOOL WINAPI _monitorBounds (MHND,RECT*);
-HDC WINAPI _makeDCFromMonitor (MHND);
-HWND WINAPI _createWindowOM (MHND,LPCTSTR,LPCTSTR,DWORD,int,int,int,
- int,HWND,HMENU,HANDLE,LPVOID);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500) */
-
-#endif /* _INC_MMSTUB */
--- a/jdk/src/windows/native/sun/windows/awt_MenuItem.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_MenuItem.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include "awt_MenuItem.h"
#include "awt_Menu.h"
#include "awt_MenuBar.h"
@@ -70,7 +71,6 @@
LANGID AwtMenuItem::m_idLang = LOWORD(GetKeyboardLayout(0));
UINT AwtMenuItem::m_CodePage =
AwtMenuItem::LangToCodePage(AwtMenuItem::m_idLang);
-BOOL AwtMenuItem::m_isWin95 = IS_WIN95;
BOOL AwtMenuItem::sm_rtl = PRIMARYLANGID(GetInputLanguage()) == LANG_ARABIC ||
PRIMARYLANGID(GetInputLanguage()) == LANG_HEBREW;
BOOL AwtMenuItem::sm_rtlReadingOrder =
@@ -150,7 +150,7 @@
jobject createError = NULL;
if (dw == ERROR_OUTOFMEMORY)
{
- jstring errorMsg = env->NewStringUTF("too many menu handles");
+ jstring errorMsg = JNU_NewStringPlatform(env, L"too many menu handles");
createError = JNU_NewObjectByName(env, "java/lang/OutOfMemoryError",
"(Ljava/lang/String;)V",
errorMsg);
@@ -435,16 +435,7 @@
if (drawInfo.itemID != m_Id)
return;
- /* Fixed bug 4349969. Since the problem occurs on Windows 98 and not on
- Windows NT, the fix is to check for Windows 95/98 and to check if the
- handle to the menu of the item to be drawn is the same as the handle to the
- menu of the menu object. If they're not the same, just return and don't do
- the drawing.
- */
- if ( IS_WIN95 && drawInfo.hwndItem != (HWND)this->m_menuContainer->GetHMenu()) {
- return;
- } else
- DrawSelf(drawInfo);
+ DrawSelf(drawInfo);
}
void AwtMenuItem::MeasureSelf(HDC hDC, MEASUREITEMSTRUCT& measureInfo)
@@ -802,8 +793,9 @@
jobject jitem = GetTarget(env);
jstring label =
(jstring)(env)->GetObjectField(jitem, AwtMenuItem::labelID);
- LPWSTR labelW = TO_WSTRING(label);
+ LPCWSTR labelW = JNU_GetStringPlatformChars(env, label, NULL);
BOOL isSeparator = (labelW && (wcscmp(labelW, L"-") == 0));
+ JNU_ReleaseStringPlatformChars(env, label, labelW);
env->DeleteLocalRef(label);
env->DeleteLocalRef(jitem);
--- a/jdk/src/windows/native/sun/windows/awt_Multimon.h Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright 1999-2001 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 _INC_MULTIMON_
-#define _INC_MULTIMON_
-#endif
-//
-// build defines that replace the regular APIs with our versions
-//
-#undef GetMonitorInfo
-#undef GetSystemMetrics
-#undef MonitorFromWindow
-#undef MonitorFromRect
-#undef MonitorFromPoint
-#undef EnumDisplayMonitors
-#undef EnumDisplayDevices
-
-#include "awt_MMStub.h"
-
-#define GetSystemMetricsMM _getSystemMetrics
-#define MonitorFromWindow _monitorFromWindow
-#define MonitorFromRect _monitorFromRect
-#define MonitorFromPoint _monitorFromPoint
-#define GetMonitorInfo _getMonitorInfo
-#define EnumDisplayMonitors _enumDisplayMonitors
-#define EnumDisplayDevices _enumDisplayDevices
-
-
-#define CountMonitors _countMonitors
-#define CollectMonitors _collectMonitors
-#define MonitorBounds _monitorBounds
-#define MakeDCFromMonitor _makeDCFromMonitor
-#define CreateWindowOnMonitor _createWindowOM
--- a/jdk/src/windows/native/sun/windows/awt_Object.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Object.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -25,9 +25,6 @@
#include "awt_Object.h"
#include "ObjectList.h"
-#ifdef DEBUG
-#include "awt_Unicode.h"
-#endif
#ifdef DEBUG
static BOOL reportEvents = FALSE;
@@ -116,8 +113,9 @@
"getName",
"()Ljava/lang/String;").l;
DASSERT(!safe_ExceptionOccurred(env));
- printf("Posting %s%s method to %S\n", methodName, methodSig,
- TO_WSTRING(targetStr));
+ LPCWSTR targetStrW = JNU_GetStringPlatformChars(env, targetStr, NULL);
+ printf("Posting %s%s method to %S\n", methodName, methodSig, targetStrW);
+ JNU_ReleaseStringPlatformChars(env, targetStr, targetStrW);
}
#endif
/* caching would do much good here */
@@ -148,8 +146,11 @@
(jstring)JNU_CallMethodByName(env, NULL, GetTarget(env),"getName",
"()Ljava/lang/String;").l;
DASSERT(!safe_ExceptionOccurred(env));
- printf("Posting %S to %S\n", TO_WSTRING(eventStr),
- TO_WSTRING(targetStr));
+ LPCWSTR eventStrW = JNU_GetStringPlatformChars(env, eventStr, NULL);
+ LPCWSTR targetStrW = JNU_GetStringPlatformChars(env, targetStr, NULL);
+ printf("Posting %S to %S\n", eventStrW, targetStrW);
+ JNU_ReleaseStringPlatformChars(env, eventStr, eventStrW);
+ JNU_ReleaseStringPlatformChars(env, targetStr, targetStrW);
}
#endif
/* Post event to the system EventQueue. */
--- a/jdk/src/windows/native/sun/windows/awt_Palette.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Palette.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2001-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
@@ -23,7 +23,7 @@
* have any questions.
*/
-#include <windows.h>
+#include "awt.h"
#include "awt_Palette.h"
#include "awt_Component.h"
#include "img_util_md.h"
--- a/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -234,11 +234,13 @@
jobject jitem = item->GetTarget(env);
BOOL bItemEnabled = isEnabled && (jboolean)env->GetBooleanField(jitem,
AwtMenuItem::enabledID);
- LPWSTR labelW = TO_WSTRING((jstring)env->GetObjectField(jitem,
- AwtMenuItem::labelID));
- if (labelW != NULL && wcscmp(labelW,L"-") != 0) {
+ jstring labelStr = static_cast<jstring>(env->GetObjectField(jitem, AwtMenuItem::labelID));
+ LPCWSTR labelStrW = JNU_GetStringPlatformChars(env, labelStr, NULL);
+ if (labelStrW && wcscmp(labelStrW, L"-") != 0) {
item->Enable(bItemEnabled);
}
+ JNU_ReleaseStringPlatformChars(env, labelStr, labelStrW);
+ env->DeleteLocalRef(labelStr);
env->DeleteLocalRef(jitem);
}
env->DeleteLocalRef(target);
--- a/jdk/src/windows/native/sun/windows/awt_PrintControl.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_PrintControl.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -108,16 +108,13 @@
{
JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
- BOOL nt = IS_NT;
DWORD cReturned = 0;
if (pPrinterEnum == NULL) {
// Compute size of buffer
DWORD cbNeeded = 0;
- if (nt) {
- ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
+ ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
NULL, 2, NULL, 0, &cbNeeded, &cReturned);
- }
::EnumPrinters(PRINTER_ENUM_LOCAL,
NULL, 5, NULL, 0, pcbBuf, &cReturned);
if (cbNeeded > (*pcbBuf)) {
@@ -139,65 +136,63 @@
// doesn't support port searches. So, if the user has specified the
// printer name as "LPT1:" (even though this is actually a port
// name), we won't find the printer here.
- if (nt) {
- if (!::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
- NULL, 4, pPrinterEnum, cbBuf, &dummyWord, &cReturned)) {
- return FALSE;
- }
+ if (!::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
+ NULL, 4, pPrinterEnum, cbBuf, &dummyWord, &cReturned)) {
+ return FALSE;
+ }
- for (DWORD i = 0; i < cReturned; i++) {
- PRINTER_INFO_4 *info4 = (PRINTER_INFO_4 *)
- (pPrinterEnum + i * sizeof(PRINTER_INFO_4));
- if (info4->pPrinterName != NULL &&
- _tcsicmp(lpcPrinterName, info4->pPrinterName) == 0) {
+ for (DWORD i = 0; i < cReturned; i++) {
+ PRINTER_INFO_4 *info4 = (PRINTER_INFO_4 *)
+ (pPrinterEnum + i * sizeof(PRINTER_INFO_4));
+ if (info4->pPrinterName != NULL &&
+ _tcsicmp(lpcPrinterName, info4->pPrinterName) == 0) {
- // Fix for BugTraq Id 4281380.
- // Get the port name since some drivers may require
- // this name to be passed to ::DeviceCapabilities().
- HANDLE hPrinter = NULL;
- if (::OpenPrinter(info4->pPrinterName, &hPrinter, NULL)) {
- // Fix for BugTraq Id 4286812.
- // Some drivers don't support PRINTER_INFO_5.
- // In this case we try PRINTER_INFO_2, and if that
- // isn't supported as well return NULL port name.
- try {
- if (AwtPrintControl::IsSupportedLevel(hPrinter, 5)) {
- VERIFY(::GetPrinter(hPrinter, 5, pPrinterEnum, cbBuf,
- &dummyWord));
- PRINTER_INFO_5 *info5 = (PRINTER_INFO_5 *)pPrinterEnum;
- *foundPrinter = info5->pPrinterName;
- // pPortName may specify multiple ports. We only want one.
- *foundPort = (info5->pPortName != NULL)
- ? _tcstok(info5->pPortName, TEXT(",")) : NULL;
- } else if (AwtPrintControl::IsSupportedLevel(hPrinter, 2)) {
- VERIFY(::GetPrinter(hPrinter, 2, pPrinterEnum, cbBuf,
- &dummyWord));
- PRINTER_INFO_2 *info2 = (PRINTER_INFO_2 *)pPrinterEnum;
- *foundPrinter = info2->pPrinterName;
- // pPortName may specify multiple ports. We only want one.
- *foundPort = (info2->pPortName != NULL)
- ? _tcstok(info2->pPortName, TEXT(",")) : NULL;
- } else {
- *foundPrinter = info4->pPrinterName;
- // We failed to determine port name for the found printer.
- *foundPort = NULL;
- }
- } catch (std::bad_alloc&) {
- VERIFY(::ClosePrinter(hPrinter));
- throw;
+ // Fix for BugTraq Id 4281380.
+ // Get the port name since some drivers may require
+ // this name to be passed to ::DeviceCapabilities().
+ HANDLE hPrinter = NULL;
+ if (::OpenPrinter(info4->pPrinterName, &hPrinter, NULL)) {
+ // Fix for BugTraq Id 4286812.
+ // Some drivers don't support PRINTER_INFO_5.
+ // In this case we try PRINTER_INFO_2, and if that
+ // isn't supported as well return NULL port name.
+ try {
+ if (AwtPrintControl::IsSupportedLevel(hPrinter, 5)) {
+ VERIFY(::GetPrinter(hPrinter, 5, pPrinterEnum, cbBuf,
+ &dummyWord));
+ PRINTER_INFO_5 *info5 = (PRINTER_INFO_5 *)pPrinterEnum;
+ *foundPrinter = info5->pPrinterName;
+ // pPortName may specify multiple ports. We only want one.
+ *foundPort = (info5->pPortName != NULL)
+ ? _tcstok(info5->pPortName, TEXT(",")) : NULL;
+ } else if (AwtPrintControl::IsSupportedLevel(hPrinter, 2)) {
+ VERIFY(::GetPrinter(hPrinter, 2, pPrinterEnum, cbBuf,
+ &dummyWord));
+ PRINTER_INFO_2 *info2 = (PRINTER_INFO_2 *)pPrinterEnum;
+ *foundPrinter = info2->pPrinterName;
+ // pPortName may specify multiple ports. We only want one.
+ *foundPort = (info2->pPortName != NULL)
+ ? _tcstok(info2->pPortName, TEXT(",")) : NULL;
+ } else {
+ *foundPrinter = info4->pPrinterName;
+ // We failed to determine port name for the found printer.
+ *foundPort = NULL;
}
-
+ } catch (std::bad_alloc&) {
VERIFY(::ClosePrinter(hPrinter));
-
- return TRUE;
+ throw;
}
- return FALSE;
+ VERIFY(::ClosePrinter(hPrinter));
+
+ return TRUE;
}
+
+ return FALSE;
}
}
- // We still haven't found the printer, or we're using 95/98.
+ // We still haven't found the printer, /* or we're using 95/98. */
// PRINTER_INFO_5 supports both printer name and port name, so
// we'll test both. On NT, PRINTER_ENUM_LOCAL means just local
// printers. This is what we want, because we already tested all
@@ -213,28 +208,17 @@
for (DWORD i = 0; i < cReturned; i++) {
PRINTER_INFO_5 *info5 = (PRINTER_INFO_5 *)
(pPrinterEnum + i * sizeof(PRINTER_INFO_5));
- if (nt) {
- // pPortName can specify multiple ports. Test them one at
- // a time.
- if (info5->pPortName != NULL) {
- LPTSTR port = _tcstok(info5->pPortName, TEXT(","));
- while (port != NULL) {
- if (_tcsicmp(lpcPrinterName, port) == 0) {
- *foundPrinter = info5->pPrinterName;
- *foundPort = port;
- return TRUE;
- }
- port = _tcstok(NULL, TEXT(","));
+ // pPortName can specify multiple ports. Test them one at
+ // a time.
+ if (info5->pPortName != NULL) {
+ LPTSTR port = _tcstok(info5->pPortName, TEXT(","));
+ while (port != NULL) {
+ if (_tcsicmp(lpcPrinterName, port) == 0) {
+ *foundPrinter = info5->pPrinterName;
+ *foundPort = port;
+ return TRUE;
}
- }
- } else {
- if ((info5->pPrinterName != NULL &&
- _tcsicmp(lpcPrinterName, info5->pPrinterName) == 0) ||
- (info5->pPortName != NULL &&
- _tcsicmp(lpcPrinterName, info5->pPortName) == 0)) {
- *foundPrinter = info5->pPrinterName;
- *foundPort = info5->pPortName;
- return TRUE;
+ port = _tcstok(NULL, TEXT(","));
}
}
}
@@ -400,13 +384,11 @@
}
// Create DEVNAMES.
- if (IS_NT) {
- if (pPortName != NULL) {
- info2->pPortName = pPortName;
- } else if (info2->pPortName != NULL) {
- // pPortName may specify multiple ports. We only want one.
- info2->pPortName = _tcstok(info2->pPortName, TEXT(","));
- }
+ if (pPortName != NULL) {
+ info2->pPortName = pPortName;
+ } else if (info2->pPortName != NULL) {
+ // pPortName may specify multiple ports. We only want one.
+ info2->pPortName = _tcstok(info2->pPortName, TEXT(","));
}
size_t lenDriverName = ((info2->pDriverName != NULL)
--- a/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -23,10 +23,10 @@
* have any questions.
*/
+#include "awt.h"
#include "awt_PrintDialog.h"
#include "awt_Dialog.h"
#include "awt_PrintControl.h"
-#include "awt_dlls.h"
#include "awt_Window.h"
#include "ComCtl32Util.h"
#include <sun_awt_windows_WPrintDialog.h>
@@ -39,11 +39,9 @@
BOOL
AwtPrintDialog::PrintDlg(LPPRINTDLG data) {
- AwtCommDialog::load_comdlg_procs();
return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
AwtToolkit::GetInstance().InvokeFunction(
- reinterpret_cast<void *(*)(void *)>(AwtCommDialog::PrintDlgWrapper),
- data)));
+ reinterpret_cast<void *(*)(void *)>(::PrintDlg), data)));
}
LRESULT CALLBACK PrintDialogWndProc(HWND hWnd, UINT message,
--- a/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include <math.h>
#include <windef.h>
#include <wtypes.h>
@@ -30,10 +31,9 @@
#include <commdlg.h>
#include <winspool.h>
-#include "awt.h"
-#include "awt_dlls.h"
#include "awt_Toolkit.h"
#include "awt_Component.h"
+#include "awt_Dialog.h"
#include "awt_Font.h"
#include "awt_PrintDialog.h"
#include "awt_PrintControl.h"
@@ -422,7 +422,7 @@
*/
if (AwtPrintControl::getPrintHDMode(env, self) == NULL ||
AwtPrintControl::getPrintHDName(env,self) == NULL) {
- (void)AwtCommDialog::PageSetupDlg(&setup);
+ (void)::PageSetupDlg(&setup);
/* check if hDevMode and hDevNames are set.
* If both are null, then there is no default printer.
*/
@@ -460,7 +460,7 @@
AwtDialog::CheckInstallModalHook();
- BOOL ret = AwtCommDialog::PageSetupDlg(&setup);
+ BOOL ret = ::PageSetupDlg(&setup);
if (ret) {
jobject paper = getPaper(env, page);
@@ -733,7 +733,7 @@
pd.lStructSize = sizeof(PRINTDLG);
pd.Flags = PD_RETURNDEFAULT | PD_RETURNDC;
- if (AwtCommDialog::PrintDlg(&pd)) {
+ if (::PrintDlg(&pd)) {
printDC = pd.hDC;
hDevMode = pd.hDevMode;
hDevNames = pd.hDevNames;
@@ -1838,10 +1838,6 @@
(JNIEnv *env, jobject self, jlong printDC, jlong cap, jlong join, jfloat width,
jint red, jint green, jint blue) {
- /* End cap and line join styles are not supported in Win 9x. */
- if (IS_WIN95)
- return JNI_FALSE;
-
TRY;
LOGBRUSH logBrush;
@@ -1879,23 +1875,13 @@
{
jboolean didSetFont = JNI_FALSE;
- if (IS_NT) {
- didSetFont = jFontToWFontW(env, (HDC)printDC,
+ didSetFont = jFontToWFontW(env, (HDC)printDC,
fontName,
fontSize,
isBold,
isItalic,
rotation,
awScale);
- } else {
- didSetFont = jFontToWFontA(env, (HDC)printDC,
- fontName,
- fontSize,
- isBold,
- isItalic,
- rotation,
- awScale);
- }
return didSetFont;
}
@@ -1919,7 +1905,7 @@
memset(&matchedLogFont, 0, sizeof(matchedLogFont));
- WCHAR* name = TO_WSTRING(fontName);
+ LPCWSTR fontNameW = JNU_GetStringPlatformChars(env, fontName, NULL);
/* Some fontnames of Non-ASCII fonts like 'MS Minchou' are themselves
@@ -1928,14 +1914,14 @@
*/
int maxlen = static_cast<int>(sizeof(lf.lfFaceName)) - 1;
// maxlen is int due to cbMultiByte parameter is int
- int destLen = WideCharToMultiByte(CP_ACP, // convert to ASCII code page
- 0, // flags
- name, // Unicode string
- -1, // Unicode length is calculated automatically
+ int destLen = WideCharToMultiByte(CP_ACP, // convert to ASCII code page
+ 0, // flags
+ fontNameW, // Unicode string
+ -1, // Unicode length is calculated automatically
lf.lfFaceName, // Put ASCII string here
- maxlen, // max len
- NULL, // default handling of unmappables
- NULL);// do not care if def char is used
+ maxlen, // max len
+ NULL, // default handling of unmappables
+ NULL); // do not care if def char is used
/* If WideCharToMultiByte succeeded then the number
* of bytes it copied into the face name buffer will
@@ -2018,9 +2004,10 @@
} else {
foundFont = false;
}
-
}
+ JNU_ReleaseStringPlatformChars(env, fontName, fontNameW);
+
return foundFont ? JNI_TRUE : JNI_FALSE;
}
@@ -2043,27 +2030,29 @@
memset(&matchedLogFont, 0, sizeof(matchedLogFont));
+ LPCWSTR fontNameW = JNU_GetStringPlatformChars(env, fontName, NULL);
+
/* Describe the GDI fonts we want enumerated. We
* simply supply the java font name and let GDI
* do the matching. If the java font name is
* longer than the GDI maximum font lenght then
* we can't convert the font.
*/
- WCHAR* name = TO_WSTRING(fontName);
- size_t nameLen = wcslen(name);
-
+ size_t nameLen = wcslen(fontNameW);
if (nameLen < (sizeof(lf.lfFaceName) / sizeof(lf.lfFaceName[0]))) {
- wcscpy(lf.lfFaceName, name);
+ wcscpy(lf.lfFaceName, fontNameW);
lf.lfCharSet = DEFAULT_CHARSET;
lf.lfPitchAndFamily = 0;
- foundFont = !EnumFontFamiliesExW((HDC)printDC, &lf,
+ foundFont = !::EnumFontFamiliesEx((HDC)printDC, &lf,
(FONTENUMPROCW) fontEnumProcW,
(LPARAM) &matchedLogFont, 0);
}
+ JNU_ReleaseStringPlatformChars(env, fontName, fontNameW);
+
if (!foundFont) {
return JNI_FALSE;
}
@@ -2100,7 +2089,7 @@
//Debug: dumpLogFont(&matchedLogFont);
- HFONT font = CreateFontIndirectW(&matchedLogFont);
+ HFONT font = ::CreateFontIndirect(&matchedLogFont);
if (font == NULL) {
return JNI_FALSE;
}
@@ -2123,7 +2112,7 @@
GetTextMetrics(printDC, &tm);
avgWidth = tm.tmAveCharWidth;
matchedLogFont.lfWidth = (LONG)((fabs)(avgWidth*awScale));
- font = CreateFontIndirectW(&matchedLogFont);
+ font = ::CreateFontIndirect(&matchedLogFont);
if (font == NULL) {
return JNI_FALSE;
}
@@ -2230,14 +2219,11 @@
(JNIEnv *env, jobject self, jlong printDC, jstring text)
{
SIZE size;
- LPWSTR wText = TO_WSTRING(text);
+ LPCWSTR wText = JNU_GetStringPlatformChars(env, text, NULL);
size_t strLen = wcslen(wText);
BOOL ok = GetTextExtentPoint32((HDC)printDC, wText, (int)strLen, &size);
- if (ok) {
- return size.cx;
- } else {
- return 0;
- }
+ JNU_ReleaseStringPlatformChars(env, text, wText);
+ return ok ? size.cx : 0;
}
@@ -2288,7 +2274,7 @@
long posX = ROUND_TO_LONG(x);
long posY = ROUND_TO_LONG(y);
int flags = (glyphCodes !=0) ? ETO_GLYPH_INDEX : 0;
- LPWSTR wText = TO_WSTRING(text);
+ LPCWSTR wText = JNU_GetStringPlatformChars(env, text, NULL);
int *advances = NULL, *xadvances = NULL, *xyadvances = NULL;
BOOL useYAdvances = FALSE;
@@ -2359,7 +2345,7 @@
*inxyAdvances = 0;
}
- if (useYAdvances && IS_WIN2000) {
+ if (useYAdvances) {
advances = xyadvances;
flags |= J2D_ETO_PDY;
} else {
@@ -2371,7 +2357,7 @@
env->ReleaseFloatArrayElements(positions, glyphPos, JNI_ABORT);
}
- BOOL drawn = ::ExtTextOutW( (HDC)printDC,
+ BOOL drawn = ::ExtTextOut((HDC)printDC,
posX, posY, // starting position for the text
flags, // glyphCodes?, y advances?
NULL, // optional clipping-opaquing rectangle
@@ -2385,6 +2371,8 @@
if (xyadvances != NULL) {
free(xyadvances);
}
+
+ JNU_ReleaseStringPlatformChars(env, text, wText);
}
/**
@@ -2968,7 +2956,7 @@
pd.lStructSize = sizeof(PRINTDLG);
pd.Flags = PD_RETURNDEFAULT | PD_RETURNDC;
- if (AwtCommDialog::PrintDlg(&pd)) {
+ if (::PrintDlg(&pd)) {
printDC = pd.hDC;
/* Find out how many copies the driver can do, and use driver's
--- a/jdk/src/windows/native/sun/windows/awt_Robot.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Robot.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-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
@@ -23,6 +23,7 @@
* have any questions.
*/
+#include "awt.h"
#include "awt_Toolkit.h"
#include "awt_Component.h"
#include "awt_Robot.h"
@@ -30,8 +31,6 @@
#include "java_awt_event_InputEvent.h"
#include <winuser.h>
-static const int MOUSE_MAX = 65535;
-
AwtRobot::AwtRobot( jobject peer )
{
JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
@@ -44,11 +43,11 @@
}
#ifndef SPI_GETMOUSESPEED
-#define SPI_GETMOUSESPEED 112
+#define SPI_GETMOUSESPEED 112
#endif
#ifndef SPI_SETMOUSESPEED
-#define SPI_SETMOUSESPEED 113
+#define SPI_SETMOUSESPEED 113
#endif
void AwtRobot::MouseMove( jint x, jint y)
@@ -102,19 +101,38 @@
// left handed mouse setup
BOOL bSwap = ::GetSystemMetrics(SM_SWAPBUTTON);
- if ( buttonMask & java_awt_event_InputEvent_BUTTON1_MASK ) {
+ if ( buttonMask & java_awt_event_InputEvent_BUTTON1_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON1_DOWN_MASK)
+ {
dwFlags |= !bSwap ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_RIGHTDOWN;
}
- if ( buttonMask & java_awt_event_InputEvent_BUTTON3_MASK ) {
+ if ( buttonMask & java_awt_event_InputEvent_BUTTON3_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON3_DOWN_MASK)
+ {
dwFlags |= !bSwap ? MOUSEEVENTF_RIGHTDOWN : MOUSEEVENTF_LEFTDOWN;
}
- if ( buttonMask & java_awt_event_InputEvent_BUTTON2_MASK ) {
+ if ( buttonMask & java_awt_event_InputEvent_BUTTON2_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON2_DOWN_MASK)
+ {
dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
}
- mouse_event(dwFlags, 0, 0, 0, 0 );
+ INPUT mouseInput = {0};
+ mouseInput.type = INPUT_MOUSE;
+ mouseInput.mi.time = 0;
+ mouseInput.mi.dwFlags = dwFlags;
+ if ( buttonMask & AwtComponent::masks[3] ) {
+ mouseInput.mi.dwFlags = mouseInput.mi.dwFlags | MOUSEEVENTF_XDOWN;
+ mouseInput.mi.mouseData = XBUTTON1;
+ }
+
+ if ( buttonMask & AwtComponent::masks[4] ) {
+ mouseInput.mi.dwFlags = mouseInput.mi.dwFlags | MOUSEEVENTF_XDOWN;
+ mouseInput.mi.mouseData = XBUTTON2;
+ }
+ ::SendInput(1, &mouseInput, sizeof(mouseInput));
}
void AwtRobot::MouseRelease( jint buttonMask )
@@ -125,61 +143,43 @@
// left handed mouse setup
BOOL bSwap = ::GetSystemMetrics(SM_SWAPBUTTON);
- if ( buttonMask & java_awt_event_InputEvent_BUTTON1_MASK ) {
+ if ( buttonMask & java_awt_event_InputEvent_BUTTON1_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON1_DOWN_MASK)
+ {
dwFlags |= !bSwap ? MOUSEEVENTF_LEFTUP : MOUSEEVENTF_RIGHTUP;
}
- if ( buttonMask & java_awt_event_InputEvent_BUTTON3_MASK ) {
+ if ( buttonMask & java_awt_event_InputEvent_BUTTON3_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON3_DOWN_MASK)
+ {
dwFlags |= !bSwap ? MOUSEEVENTF_RIGHTUP : MOUSEEVENTF_LEFTUP;
}
- if ( buttonMask & java_awt_event_InputEvent_BUTTON2_MASK ) {
+ if ( buttonMask & java_awt_event_InputEvent_BUTTON2_MASK ||
+ buttonMask & java_awt_event_InputEvent_BUTTON2_DOWN_MASK)
+ {
dwFlags |= MOUSEEVENTF_MIDDLEUP;
}
- mouse_event(dwFlags, 0, 0, 0, 0 );
+ INPUT mouseInput = {0};
+ mouseInput.type = INPUT_MOUSE;
+ mouseInput.mi.time = 0;
+ mouseInput.mi.dwFlags = dwFlags;
+
+ if ( buttonMask & AwtComponent::masks[3] ) {
+ mouseInput.mi.dwFlags = mouseInput.mi.dwFlags | MOUSEEVENTF_XUP;
+ mouseInput.mi.mouseData = XBUTTON1;
+ }
+
+ if ( buttonMask & AwtComponent::masks[4] ) {
+ mouseInput.mi.dwFlags = mouseInput.mi.dwFlags | MOUSEEVENTF_XUP;
+ mouseInput.mi.mouseData = XBUTTON2;
+ }
+ ::SendInput(1, &mouseInput, sizeof(mouseInput));
}
void AwtRobot::MouseWheel (jint wheelAmt) {
- if (IS_WIN95 && !IS_WIN98) {
- // Other win32 platforms do nothing for mouse_event(0), so
- // do nothing on 95, too.
- if (wheelAmt == 0) {
- return;
- }
-
- // Win95 doesn't understand MOUSEEVENTF_WHEEL, so use PostEvent
- POINT curPos;
- HWND mouseOver = NULL;
- HWND topLevel = NULL;
- UINT wheelMsg = NULL;
-
- if (::GetCursorPos((LPPOINT)&curPos) == 0) {
- return;
- }
- // get hwnd of top-level container
- mouseOver = ::WindowFromPoint(curPos);
- DASSERT(mouseOver);
- topLevel = AwtComponent::GetTopLevelParentForWindow(mouseOver);
- DASSERT(topLevel);
-
- if (::ScreenToClient(topLevel, (LPPOINT)&curPos) == 0) {
- return;
- }
- wheelMsg = AwtComponent::Wheel95GetMsg();
-
- if (wheelMsg == NULL) {
- return;
- }
-
- ::PostMessage(topLevel,
- wheelMsg,
- wheelAmt * -1 * WHEEL_DELTA,
- MAKELPARAM((WORD)curPos.x, (WORD)curPos.y));
- }
- else {
- mouse_event(MOUSEEVENTF_WHEEL, 0, 0, wheelAmt * -1 * WHEEL_DELTA, 0);
- }
+ mouse_event(MOUSEEVENTF_WHEEL, 0, 0, wheelAmt * -1 * WHEEL_DELTA, 0);
}
inline jint AwtRobot::WinToJavaPixel(USHORT r, USHORT g, USHORT b)
@@ -437,3 +437,9 @@
CATCH_BAD_ALLOC;
}
+
+JNIEXPORT jint JNICALL Java_sun_awt_windows_WRobotPeer_getNumberOfButtons(
+ JNIEnv *, jobject self)
+{
+ return GetSystemMetrics(SM_CMOUSEBUTTONS);
+}
--- a/jdk/src/windows/native/sun/windows/awt_Robot.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Robot.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1998-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
@@ -42,13 +42,13 @@
void MouseRelease( jint buttonMask );
void MouseWheel(jint wheelAmt);
+ jint getNumberOfButtons();
jint GetRGBPixel( jint x, jint y);
void GetRGBPixels(jint x, jint y, jint width, jint height, jintArray pixelArray);
void KeyPress( jint key );
void KeyRelease( jint key );
-
static AwtRobot * GetRobot( jobject self );
private:
--- a/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -108,13 +108,6 @@
{
DWORD style = WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
- if (!IS_WIN4X) {
- /*
- * It's been decided by the UI folks that 3.X ScrollPanes
- * should have borders...
- */
- style |= WS_BORDER;
- }
jint scrollbarDisplayPolicy =
env->GetIntField(target, scrollbarDisplayPolicyID);
@@ -122,7 +115,7 @@
== java_awt_ScrollPane_SCROLLBARS_ALWAYS) {
style |= WS_HSCROLL | WS_VSCROLL;
}
- DWORD exStyle = IS_WIN4X ? WS_EX_CLIENTEDGE : 0;
+ DWORD exStyle = WS_EX_CLIENTEDGE;
if (GetRTL()) {
exStyle |= WS_EX_RIGHT | WS_EX_LEFTSCROLLBAR;
@@ -225,15 +218,8 @@
}
/* Determine border width without scrollbars. */
- int horzBorder;
- int vertBorder;
- if (IS_WIN4X) {
- horzBorder = ::GetSystemMetrics(SM_CXEDGE);
- vertBorder = ::GetSystemMetrics(SM_CYEDGE);
- } else {
- horzBorder = ::GetSystemMetrics(SM_CXBORDER);
- vertBorder = ::GetSystemMetrics(SM_CYBORDER);
- }
+ int horzBorder = ::GetSystemMetrics(SM_CXEDGE);;
+ int vertBorder = ::GetSystemMetrics(SM_CYEDGE);;
parentWidth -= (horzBorder * 2);
parentHeight -= (vertBorder * 2);
--- a/jdk/src/windows/native/sun/windows/awt_TextArea.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -26,10 +26,8 @@
#include "awt_Toolkit.h"
#include "awt_TextArea.h"
#include "awt_TextComponent.h"
-#include "awt_dlls.h"
#include "awt_KeyboardFocusManager.h"
#include "awt_Canvas.h"
-#include "awt_Unicode.h"
#include "awt_Window.h"
/* IMPORTANT! Read the README.JNI file for notes on JNI converted AWT code.
@@ -50,7 +48,6 @@
jfieldID AwtTextArea::scrollbarVisibilityID;
WNDPROC AwtTextArea::sm_pDefWindowProc = NULL;
-BOOL AwtTextArea::sm_RichEdit20 = (IS_WIN98 || IS_NT);
/************************************************************************
* AwtTextArea methods
@@ -78,8 +75,12 @@
}
LPCTSTR AwtTextArea::GetClassName() {
- load_rich_edit_library();
- return sm_RichEdit20 ? RICHEDIT_CLASS : TEXT("RICHEDIT");
+ static BOOL richedLibraryLoaded = FALSE;
+ if (!richedLibraryLoaded) {
+ ::LoadLibrary(TEXT("RICHED20.DLL"));
+ richedLibraryLoaded = TRUE;
+ }
+ return RICHEDIT_CLASS;
}
/* Create a new AwtTextArea object and window. */
@@ -134,9 +135,8 @@
* scrollbars instead of hiding them when not needed.
*/
DWORD style = WS_CHILD | WS_CLIPSIBLINGS | ES_LEFT | ES_MULTILINE |
- ES_WANTRETURN | scroll_style |
- (IS_WIN4X ? 0 : WS_BORDER) | ES_DISABLENOSCROLL;
- DWORD exStyle = IS_WIN4X ? WS_EX_CLIENTEDGE : 0;
+ ES_WANTRETURN | scroll_style | ES_DISABLENOSCROLL;
+ DWORD exStyle = WS_EX_CLIENTEDGE;
if (GetRTL()) {
exStyle |= WS_EX_RIGHT | WS_EX_LEFTSCROLLBAR;
if (GetRTLReadingOrder())
@@ -169,9 +169,7 @@
// end-of-document marker or carriage return,
// to format paragraphs.
// kdm@sparc.spb.su
- if (sm_RichEdit20) {
- c->SendMessage(EM_SETTEXTMODE, TM_PLAINTEXT, 0);
- }
+ c->SendMessage(EM_SETTEXTMODE, TM_PLAINTEXT, 0);
c->m_backgroundColorSet = TRUE;
/* suppress inheriting parent's color. */
@@ -242,7 +240,7 @@
*/
size_t length = env->GetStringLength(jStr) + 1;
WCHAR *string = new WCHAR[length];
- env->GetStringRegion(jStr, 0, static_cast<jsize>(length - 1), string);
+ env->GetStringRegion(jStr, 0, static_cast<jsize>(length - 1), reinterpret_cast<jchar*>(string));
string[length-1] = '\0';
for (size_t i = 0; i < maxlen && i < length - 1; i++) {
if (string[i] == L'\n') {
@@ -461,12 +459,7 @@
/* Check if all the text is selected. */
if (cr.cpMin == 0) {
- int len = 0;
- if (m_isWin95) {
- len = ::GetWindowTextLengthA(GetHWnd());
- } else {
- len = ::GetWindowTextLengthW(GetHWnd());
- }
+ int len = ::GetWindowTextLength(GetHWnd());
if (cr.cpMin == 0 && cr.cpMax >= len) {
/*
* All the text is selected in RichEdit - select all the
@@ -738,14 +731,8 @@
// kdm@sparc.spb.su
UINT platfScrollLines = 3;
// Retrieve a number of scroll lines.
- if (!sm_RichEdit20) {
- // 95 doesn't understand the SPI_GETWHEELSCROLLLINES - get the user
- // preference by other means
- platfScrollLines = Wheel95GetScrLines();
- } else {
- ::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0,
- &platfScrollLines, 0);
- }
+ ::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0,
+ &platfScrollLines, 0);
if (platfScrollLines > 0) {
HWND hWnd = GetHWnd();
@@ -838,23 +825,6 @@
return returnVal;
}
-int AwtTextArea::GetText(LPTSTR buffer, int size)
-{
- // Due to a known limitation of the MSLU, GetWindowText cannot be
- // issued for the Unicode RichEdit control on Win9x. Use EM_GETTEXTEX instead.
- if (sm_RichEdit20 && !IS_NT) {
- GETTEXTEX gte;
- gte.cb = size * sizeof(TCHAR);
- gte.flags = GT_USECRLF;
- gte.codepage = 1200; // implies Unicode
- gte.lpDefaultChar = NULL;
- gte.lpUsedDefChar = NULL;
- return (int)SendMessage(EM_GETTEXTEX, (WPARAM)>e, (LPARAM)buffer);
- } else {
- return ::GetWindowText(GetHWnd(), buffer, size);
- }
-}
-
/*
* WM_CTLCOLOR is not sent by rich edit controls.
* Use EM_SETCHARFORMAT and EM_SETBKGNDCOLOR to set
@@ -984,16 +954,16 @@
jsize length = env->GetStringLength(text) + 1;
// Bugid 4141477 - Can't use TO_WSTRING here because it uses alloca
// WCHAR* buffer = TO_WSTRING(text);
- WCHAR *buffer = new WCHAR[length];
- env->GetStringRegion(text, 0, length-1, buffer);
+ TCHAR *buffer = new TCHAR[length];
+ env->GetStringRegion(text, 0, length-1, reinterpret_cast<jchar*>(buffer));
buffer[length-1] = '\0';
c->CheckLineSeparator(buffer);
c->RemoveCR(buffer);
// Fix for 5003402: added restoring/hiding selection to enable automatic scrolling
c->SendMessage(EM_HIDESELECTION, FALSE, TRUE);
- c->SendMessageW(EM_SETSEL, start, end);
- c->SendMessageW(EM_REPLACESEL, FALSE, (LPARAM)buffer);
+ c->SendMessage(EM_SETSEL, start, end);
+ c->SendMessage(EM_REPLACESEL, FALSE, (LPARAM)buffer);
c->SendMessage(EM_HIDESELECTION, TRUE, TRUE);
delete[] buffer;
@@ -1187,12 +1157,11 @@
HGLOBAL hMetaPict) {
if (reco == RECO_PASTE) {
// If CF_TEXT format is available edit controls will select it,
- // otherwise if it is WinNT or Win2000 and CF_UNICODETEXT is
- // available it will be selected, otherwise if CF_OEMTEXT is
- // available it will be selected.
+ // otherwise if it is CF_UNICODETEXT is available it will be
+ // selected, otherwise if CF_OEMTEXT is available it will be selected.
if (::IsClipboardFormatAvailable(CF_TEXT)) {
*pcfFormat = CF_TEXT;
- } else if (!m_isWin95 && ::IsClipboardFormatAvailable(CF_UNICODETEXT)) {
+ } else if (::IsClipboardFormatAvailable(CF_UNICODETEXT)) {
*pcfFormat = CF_UNICODETEXT;
} else if (::IsClipboardFormatAvailable(CF_OEMTEXT)) {
*pcfFormat = CF_OEMTEXT;
--- a/jdk/src/windows/native/sun/windows/awt_TextArea.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -73,8 +73,6 @@
MsgRouting WmNcHitTest(UINT x, UINT y, LRESULT &retVal);
MsgRouting HandleEvent(MSG *msg, BOOL synthetic);
- INLINE virtual int GetText(LPTSTR buffer, int size);
-
INLINE void SetIgnoreEnChange(BOOL b) { m_bIgnoreEnChange = b; }
virtual void SetColor(COLORREF c);
@@ -96,10 +94,6 @@
void EditGetSel(CHARRANGE &cr);
LONG EditGetCharFromPos(POINT& pt);
private:
-
- // TRUE if the rich edit version is 2.0
- static BOOL sm_RichEdit20;
-
// RichEdit 1.0 control generates EN_CHANGE notifications not only
// on text changes, but also on any character formatting change.
// This flag is true when the latter case is detected.
--- a/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -326,7 +326,7 @@
WCHAR* buf = new WCHAR[len + 1];
c->GetText(buf, len + 1);
c->RemoveCR(buf);
- result = env->NewString(buf, static_cast<jsize>(wcslen(buf)));
+ result = JNU_NewStringPlatform(env, buf);
delete [] buf;
}
}
@@ -362,7 +362,7 @@
{
int length = env->GetStringLength(text);
WCHAR* buffer = new WCHAR[length + 1];
- env->GetStringRegion(text, 0, length, buffer);
+ env->GetStringRegion(text, 0, length, reinterpret_cast<jchar*>(buffer));
buffer[length] = 0;
c->CheckLineSeparator(buffer);
c->RemoveCR(buffer);
--- a/jdk/src/windows/native/sun/windows/awt_TextComponent.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextComponent.h Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -70,15 +70,6 @@
static jstring _GetText(void *param);
BOOL ActMouseMessage(MSG* pMsg);
- /*
- * For TextComponents that contains WCHAR strings or messages with
- * WCHAR parameters.
- */
- INLINE LRESULT SendMessageW(UINT msg, WPARAM wParam = 0, LPARAM lParam = 0)
- {
- DASSERT(GetHWnd());
- return ::SendMessageW(GetHWnd(), msg, wParam, lParam);
- }
void SetFont(AwtFont* font);
--- a/jdk/src/windows/native/sun/windows/awt_TextField.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextField.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1996-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
@@ -26,7 +26,6 @@
#include "awt_Toolkit.h"
#include "awt_TextField.h"
#include "awt_TextComponent.h"
-#include "awt_dlls.h"
#include "awt_KeyboardFocusManager.h"
#include "awt_Canvas.h"
@@ -69,9 +68,8 @@
{
DWORD style = WS_CHILD | WS_CLIPSIBLINGS |
- ES_LEFT | ES_AUTOHSCROLL |
- (IS_WIN4X ? 0 : WS_BORDER);
- DWORD exStyle = IS_WIN4X ? WS_EX_CLIENTEDGE : 0;
+ ES_LEFT | ES_AUTOHSCROLL;
+ DWORD exStyle = WS_EX_CLIENTEDGE;
if (GetRTL()) {
exStyle |= WS_EX_RIGHT | WS_EX_LEFTSCROLLBAR;
if (GetRTLReadingOrder())
--- a/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,15 +23,16 @@
* have any questions.
*/
+#include "awt.h"
#include <signal.h>
#include <windowsx.h>
-#if defined(_DEBUG) && defined(_MSC_VER) && _MSC_VER >= 1000
-#include <crtdbg.h>
-#endif
+//#if defined(_DEBUG) && defined(_MSC_VER) && _MSC_VER >= 1000
+//#include <crtdbg.h>
+//#endif
#define _JNI_IMPLEMENTATION_
-#include "stdhdrs.h"
+
#include "awt_DrawingSurface.h"
#include "awt_AWTEvent.h"
#include "awt_Component.h"
@@ -51,7 +52,6 @@
#include "awt_FileDialog.h"
#include "CmdIDList.h"
#include "awt_new.h"
-#include "awt_Unicode.h"
#include "debug_trace.h"
#include "debug_mem.h"
@@ -225,8 +225,7 @@
HKL prev = ::ActivateKeyboardLayout(hkl, 0);
// If the above call fails, try loading the layout in case of NT
- if ((prev == 0) && IS_NT) {
-
+ if (!prev) {
// create input locale string, e.g., "00000409", from hkl.
TCHAR inputLocale[9];
TCHAR buf[9];
@@ -297,7 +296,7 @@
if (jstr != NULL) {
int length = env->GetStringLength(jstr);
buffer = new TCHAR[length + 1];
- LPCTSTR tmp = (LPCTSTR)JNU_GetStringPlatformChars(env, jstr, NULL);
+ LPCTSTR tmp = JNU_GetStringPlatformChars(env, jstr, NULL);
_tcscpy(buffer, tmp);
JNU_ReleaseStringPlatformChars(env, jstr, tmp);
} else {
@@ -323,6 +322,7 @@
m_vmSignalled = FALSE;
m_isDynamicLayoutSet = FALSE;
+ m_areExtraMouseButtonsEnabled = TRUE;
m_verifyComponents = FALSE;
m_breakOnError = FALSE;
@@ -490,8 +490,6 @@
::CloseHandle(m_waitEvent);
- ComCtl32Util::GetInstance().FreeLibraries();
-
tk.m_isDisposed = TRUE;
return TRUE;
@@ -886,8 +884,6 @@
return (DWORD)ImmGetOpenStatus((HIMC)wParam);
}
case WM_DISPLAYCHANGE: {
- AwtCursor::DirtyAllCustomCursors();
-
// Reinitialize screens
initScreens(env);
@@ -1161,9 +1157,7 @@
if (p && p->PreProcessMsg(msg) == mrConsume)
return TRUE;
- if ((msg.message >= WM_MOUSEFIRST && msg.message <= WM_AWT_MOUSELAST) ||
- (IS_WIN95 && !IS_WIN98 &&
- msg.message == AwtComponent::Wheel95GetMsg()) ||
+ if ((msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST) ||
(msg.message >= WM_NCMOUSEMOVE && msg.message <= WM_NCMBUTTONDBLCLK)) {
if (PreProcessMouseMsg(p, msg)) {
return TRUE;
@@ -1190,9 +1184,7 @@
return FALSE;
}
- if (msg.message >= WM_MOUSEFIRST && msg.message <= WM_AWT_MOUSELAST ||
- (IS_WIN95 && !IS_WIN98 && msg.message == AwtComponent::Wheel95GetMsg()))
- {
+ if (msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST) {
mouseWParam = msg.wParam;
mouseLParam = msg.lParam;
} else {
@@ -1287,21 +1279,6 @@
//window
msg.hwnd = hWndForWheel;
}
- else if (IS_WIN95 && !IS_WIN98 &&
- msg.message == AwtComponent::Wheel95GetMsg() &&
- mouseWheelComp != NULL) {
-
- // On Win95, mouse wheels are _always_ delivered to the top level
- // Frame. Default behavior only takes place if the message's hwnd
- // remains that of the Frame. We only want to change the hwnd if
- // we're changing it to a Component that DOESN'T handle the
- // mousewheel natively.
-
- if (!mouseWheelComp->InheritsNativeMouseWheelBehavior()) {
- DTRACE_PRINTLN("AwtT::PPMM: changing hwnd on 95");
- msg.hwnd = hWndForWheel;
- }
- }
/*
* Make sure we get at least one last chance to check for transitions
@@ -1792,7 +1769,7 @@
{
jobject insets = NULL;
RECT rRW;
- MONITOR_INFO *miInfo;
+ LPMONITORINFO miInfo;
TRY;
@@ -1814,10 +1791,10 @@
if (miInfo) {
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);
+ miInfo->rcWork.top - miInfo->rcMonitor.top,
+ miInfo->rcWork.left - miInfo->rcMonitor.left,
+ miInfo->rcMonitor.bottom - miInfo->rcWork.bottom,
+ miInfo->rcMonitor.right - miInfo->rcWork.right);
}
}
@@ -2057,29 +2034,15 @@
swprintf(szVer, L"0x%x = %ld", version, version);
int l = lstrlen(szVer);
- if (IS_WIN95) {
- if (IS_WIN98) {
- if (IS_WINME) {
- swprintf(szVer + l, L" (Windows ME)");
+ if (IS_WIN2000) {
+ if (IS_WINXP) {
+ if (IS_WINVISTA) {
+ swprintf(szVer + l, L" (Windows Vista)");
} else {
- swprintf(szVer + l, L" (Windows 98)");
+ swprintf(szVer + l, L" (Windows XP)");
}
} else {
- swprintf(szVer + l, L" (Windows 95)");
- }
- } else if (IS_NT) {
- if (IS_WIN2000) {
- if (IS_WINXP) {
- if (IS_WINVISTA) {
- swprintf(szVer + l, L" (Windows Vista)");
- } else {
- swprintf(szVer + l, L" (Windows XP)");
- }
- } else {
- swprintf(szVer + l, L" (Windows 2000)");
- }
- } else {
- swprintf(szVer + l, L" (Windows NT)");
+ swprintf(szVer + l, L" (Windows 2000)");
}
} else {
swprintf(szVer + l, L" (Unknown)");
@@ -2130,3 +2093,26 @@
splashClose();
}
}
+
+/*
+ * accessible from awt_Component
+ */
+BOOL AwtToolkit::areExtraMouseButtonsEnabled() {
+ return m_areExtraMouseButtonsEnabled;
+}
+
+/*
+ * Class: sun_awt_windows_WToolkit
+ * Method: setExtraMouseButtonsEnabledNative
+ * Signature: (Z)V
+ */
+extern "C" JNIEXPORT void JNICALL Java_sun_awt_windows_WToolkit_setExtraMouseButtonsEnabledNative
+(JNIEnv *env, jclass self, jboolean enable){
+ TRY;
+ AwtToolkit::GetInstance().setExtraMouseButtonsEnabled(enable);
+ CATCH_BAD_ALLOC;
+}
+
+void AwtToolkit::setExtraMouseButtonsEnabled(BOOL enable) {
+ m_areExtraMouseButtonsEnabled = enable;
+}
--- a/jdk/src/windows/native/sun/windows/awt_Toolkit.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.h Thu Feb 26 14:25:55 2009 -0800
@@ -50,7 +50,6 @@
#include "awt.h"
#include "awtmsg.h"
-#include "awt_Multimon.h"
#include "Trace.h"
#include "sun_awt_windows_WToolkit.h"
@@ -89,11 +88,8 @@
*/
class CriticalSection {
public:
- INLINE CriticalSection() { ::InitializeCriticalSection(&rep);
- ::InitializeCriticalSection(&tryrep);
- tryEntered = 0; }
- INLINE ~CriticalSection() { ::DeleteCriticalSection(&rep);
- ::DeleteCriticalSection(&tryrep); }
+ INLINE CriticalSection() { ::InitializeCriticalSection(&rep); }
+ INLINE ~CriticalSection() { ::DeleteCriticalSection(&rep); }
class Lock {
public:
@@ -111,50 +107,18 @@
private:
CRITICAL_SECTION rep;
- CRITICAL_SECTION tryrep;
- long tryEntered;
-
CriticalSection(const CriticalSection&);
const CriticalSection& operator =(const CriticalSection&);
public:
- virtual void Enter (void)
- {
- ::EnterCriticalSection(&tryrep);
- tryEntered++;
- if (tryEntered == 1) {
- ::EnterCriticalSection(&rep);
- ::LeaveCriticalSection(&tryrep);
- } else {
- ::LeaveCriticalSection(&tryrep);
- ::EnterCriticalSection(&rep);
- }
+ virtual void Enter() {
+ ::EnterCriticalSection(&rep);
}
- // we cannot use ::TryEnterCriticalSection as it is not supported on Win9x/Me
- virtual BOOL TryEnter (void)
- {
- BOOL result = FALSE;
- ::EnterCriticalSection(&tryrep);
- if (tryEntered == 0) {
- ::EnterCriticalSection(&rep);
- tryEntered++;
- result = TRUE;
- }
- ::LeaveCriticalSection(&tryrep);
- return result;
+ virtual BOOL TryEnter() {
+ return ::TryEnterCriticalSection(&rep);
}
- virtual void Leave (void)
- {
- ::EnterCriticalSection(&tryrep);
- if (tryEntered > 0) {
- tryEntered--;
- } else {
- // this may happen only if we call to Leave() before
- // Enter() so this is definitely a bug
- DASSERT(FALSE);
- }
+ virtual void Leave() {
::LeaveCriticalSection(&rep);
- ::LeaveCriticalSection(&tryrep);
}
};
@@ -211,6 +175,8 @@
BOOL IsDynamicLayoutSet();
BOOL IsDynamicLayoutSupported();
BOOL IsDynamicLayoutActive();
+ BOOL areExtraMouseButtonsEnabled();
+ void setExtraMouseButtonsEnabled(BOOL enable);
INLINE BOOL localPump() { return m_localPump; }
INLINE BOOL VerifyComponents() { return FALSE; } // TODO: Use new DebugHelper class to set this flag
@@ -387,6 +353,7 @@
BOOL m_verbose;
BOOL m_isActive; // set to FALSE at beginning of Dispose
BOOL m_isDisposed; // set to TRUE at end of Dispose
+ BOOL m_areExtraMouseButtonsEnabled;
BOOL m_vmSignalled; // set to TRUE if QUERYENDSESSION has successfully
// raised SIGTERM
--- a/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,9 +23,10 @@
* have any questions.
*/
-#include <windows.h>
+#include "awt.h"
#include <windowsx.h>
#include <shellapi.h>
+#include <shlwapi.h>
#include "awt_Toolkit.h"
#include "awt_TrayIcon.h"
@@ -173,27 +174,20 @@
env->DeleteLocalRef(target);
return awtTrayIcon;
}
-typedef struct _SDLLVERSIONINFO
-{
- DWORD cbSize;
- DWORD dwMajorVersion; // Major version
- DWORD dwMinorVersion; // Minor version
- DWORD dwBuildNumber; // Build number
- DWORD dwPlatformID; // DLLVER_PLATFORM_*
-} SDLLVERSIONINFO;
-typedef HRESULT (CALLBACK* SDLLGETVERSIONPROC)(SDLLVERSIONINFO *);
void AwtTrayIcon::InitNID(UINT uID)
{
// fix for 6271589: we MUST set the size of the structure to match
// the shell version, otherwise some errors may occur (like missing
// balloon messages on win2k)
- SDLLVERSIONINFO dllVersionInfo;
- dllVersionInfo.cbSize = sizeof(SDLLVERSIONINFO);
- int shellVersion = 4; // WIN_98
+ DLLVERSIONINFO dllVersionInfo;
+ dllVersionInfo.cbSize = sizeof(DLLVERSIONINFO);
+ int shellVersion = 5; // WIN_2000
+ // MSDN: DllGetVersion should not be implicitly called, but rather
+ // loaded using GetProcAddress
HMODULE hShell = LoadLibrary(TEXT("Shell32.dll"));
if (hShell != NULL) {
- SDLLGETVERSIONPROC proc = (SDLLGETVERSIONPROC)GetProcAddress(hShell, "DllGetVersion");
+ DLLGETVERSIONPROC proc = (DLLGETVERSIONPROC)GetProcAddress(hShell, "DllGetVersion");
if (proc != NULL) {
if (proc(&dllVersionInfo) == NOERROR) {
shellVersion = dllVersionInfo.dwMajorVersion;
@@ -202,14 +196,16 @@
}
FreeLibrary(hShell);
switch (shellVersion) {
- case 5: // WIN_2000, WIN_ME
+ case 5: // WIN_2000
m_nid.cbSize = (BYTE *)(&m_nid.guidItem) - (BYTE *)(&m_nid.cbSize);
break;
case 6: // WIN_XP
+ // Uncomment these two lines when moving to VS2008
+// m_nid.cbSize = (BYTE *)(&m_nid.hBalloonIcon) - (BYTE *)(&m_nid.cbSize);
+// break;
+ default: // WIN_VISTA?
m_nid.cbSize = sizeof(m_nid);
break;
- default: // WIN_98, WIN_NT
- m_nid.cbSize = (BYTE *)(&m_nid.szTip) - (BYTE *)(&m_nid.cbSize) + sizeof(m_nid.szTip) / 2;
}
m_nid.hWnd = AwtTrayIcon::sm_msgWindow;
m_nid.uID = uID;
@@ -217,7 +213,7 @@
m_nid.uCallbackMessage = WM_AWT_TRAY_NOTIFY;
m_nid.hIcon = AwtToolkit::GetInstance().GetAwtIcon();
m_nid.szTip[0] = '\0';
- m_nid.uVersion = IS_WIN2000 ? AWT_NOTIFYICON_VERSION : 0;
+ m_nid.uVersion = NOTIFYICON_VERSION;
}
BOOL AwtTrayIcon::SendTrayMessage(DWORD dwMessage)
@@ -304,13 +300,13 @@
case WM_CONTEXTMENU:
mr = WmContextMenu(0, pos.x, pos.y);
break;
- case AWT_NIN_KEYSELECT:
+ case NIN_KEYSELECT:
mr = WmKeySelect(0, pos.x, pos.y);
break;
- case AWT_NIN_SELECT:
+ case NIN_SELECT:
mr = WmSelect(0, pos.x, pos.y);
break;
- case AWT_NIN_BALLOONUSERCLICK:
+ case NIN_BALLOONUSERCLICK:
mr = WmBalloonUserClick(0, pos.x, pos.y);
break;
}
@@ -371,7 +367,7 @@
(AwtComponent::GetButton(button) == java_awt_event_MouseEvent_BUTTON3 ?
TRUE : FALSE), AwtComponent::GetButton(button), &msg);
- if ((m_mouseButtonClickAllowed & AwtComponent::GetButtonMK(button)) != 1) { // No up-button in the drag-state
+ if ((m_mouseButtonClickAllowed & AwtComponent::GetButtonMK(button)) != 0) { // No up-button in the drag-state
SendMouseEvent(java_awt_event_MouseEvent_MOUSE_CLICKED,
TimeHelper::windowsToUTC(::GetTickCount()), x, y, AwtComponent::GetJavaModifiers(),
clickCount, JNI_FALSE, AwtComponent::GetButton(button));
@@ -397,7 +393,7 @@
lastX = x;
lastY = y;
AwtComponent::InitMessage(&msg, lastMessage, flags, MAKELPARAM(x, y), x, y);
- if ((flags & AwtComponent::ALL_MK_BUTTONS) != 0) {
+ if ((flags & ALL_MK_BUTTONS) != 0) {
m_mouseButtonClickAllowed = 0;
} else {
SendMouseEvent(java_awt_event_MouseEvent_MOUSE_MOVED, TimeHelper::windowsToUTC(::GetTickCount()), x, y,
@@ -473,7 +469,7 @@
BOOL result = item->m_trayIcon->SendTrayMessage(NIM_ADD);
// 6270114: Instructs the taskbar to behave according to the Shell version 5.0
if (result) {
- item->m_trayIcon->SendTrayMessage(AWT_NIM_SETVERSION);
+ item->m_trayIcon->SendTrayMessage(NIM_SETVERSION);
}
}
return mrDoDefault;
@@ -733,9 +729,9 @@
goto ret;
}
- tooltipStr = env->GetStringChars(jtooltip, (jboolean *)NULL);
+ tooltipStr = JNU_GetStringPlatformChars(env, jtooltip, (jboolean *)NULL);
trayIcon->SetToolTip(tooltipStr);
- env->ReleaseStringChars(jtooltip, tooltipStr);
+ JNU_ReleaseStringPlatformChars(env, jtooltip, tooltipStr);
ret:
env->DeleteGlobalRef(self);
env->DeleteGlobalRef(jtooltip);
@@ -782,7 +778,7 @@
BOOL result = trayIcon->SendTrayMessage(jupdate == JNI_TRUE ? NIM_MODIFY : NIM_ADD);
// 6270114: Instructs the taskbar to behave according to the Shell version 5.0
if (result && jupdate == JNI_FALSE) {
- trayIcon->SendTrayMessage(AWT_NIM_SETVERSION);
+ trayIcon->SendTrayMessage(NIM_SETVERSION);
}
ret:
env->DeleteGlobalRef(self);
@@ -791,22 +787,19 @@
void AwtTrayIcon::DisplayMessage(LPCTSTR caption, LPCTSTR text, LPCTSTR msgType)
{
- if (!IS_WIN2000)
- return;
-
- m_nid.uFlags |= AWT_NIF_INFO;
+ m_nid.uFlags |= NIF_INFO;
m_nid.uTimeout = 10000;
if (lstrcmp(msgType, TEXT("ERROR")) == 0) {
- m_nid.dwInfoFlags = AWT_NIIF_ERROR;
+ m_nid.dwInfoFlags = NIIF_ERROR;
} else if (lstrcmp(msgType, TEXT("WARNING")) == 0) {
- m_nid.dwInfoFlags = AWT_NIIF_WARNING;
+ m_nid.dwInfoFlags = NIIF_WARNING;
} else if (lstrcmp(msgType, TEXT("INFO")) == 0) {
- m_nid.dwInfoFlags = AWT_NIIF_INFO;
+ m_nid.dwInfoFlags = NIIF_INFO;
} else if (lstrcmp(msgType, TEXT("NONE")) == 0) {
- m_nid.dwInfoFlags = AWT_NIIF_NONE;
+ m_nid.dwInfoFlags = NIIF_NONE;
} else {
- m_nid.dwInfoFlags = AWT_NIIF_NONE;
+ m_nid.dwInfoFlags = NIIF_NONE;
}
if (caption[0] == '\0') {
@@ -835,7 +828,7 @@
}
SendTrayMessage(NIM_MODIFY);
- m_nid.uFlags &= ~AWT_NIF_INFO;
+ m_nid.uFlags &= ~NIF_INFO;
}
void AwtTrayIcon::_DisplayMessage(void *param)
@@ -855,15 +848,15 @@
JNI_CHECK_PEER_GOTO(self, ret);
trayIcon = (AwtTrayIcon *)pData;
- captionStr = env->GetStringChars(jcaption, (jboolean *)NULL);
- textStr = env->GetStringChars(jtext, (jboolean *)NULL);
- msgTypeStr = env->GetStringChars(jmsgType, (jboolean *)NULL);
+ captionStr = JNU_GetStringPlatformChars(env, jcaption, (jboolean *)NULL);
+ textStr = JNU_GetStringPlatformChars(env, jtext, (jboolean *)NULL);
+ msgTypeStr = JNU_GetStringPlatformChars(env, jmsgType, (jboolean *)NULL);
trayIcon->DisplayMessage(captionStr, textStr, msgTypeStr);
- env->ReleaseStringChars(jcaption, captionStr);
- env->ReleaseStringChars(jtext, textStr);
- env->ReleaseStringChars(jmsgType, msgTypeStr);
+ JNU_ReleaseStringPlatformChars(env, jcaption, captionStr);
+ JNU_ReleaseStringPlatformChars(env, jtext, textStr);
+ JNU_ReleaseStringPlatformChars(env, jmsgType, msgTypeStr);
ret:
env->DeleteGlobalRef(self);
env->DeleteGlobalRef(jcaption);
@@ -1057,16 +1050,14 @@
{
TRY;
- if (IS_WIN2000) {
- DisplayMessageStruct *dms = new DisplayMessageStruct;
- dms->trayIcon = env->NewGlobalRef(self);
- dms->caption = (jstring)env->NewGlobalRef(caption);
- dms->text = (jstring)env->NewGlobalRef(text);
- dms->msgType = (jstring)env->NewGlobalRef(msgType);
+ DisplayMessageStruct *dms = new DisplayMessageStruct;
+ dms->trayIcon = env->NewGlobalRef(self);
+ dms->caption = (jstring)env->NewGlobalRef(caption);
+ dms->text = (jstring)env->NewGlobalRef(text);
+ dms->msgType = (jstring)env->NewGlobalRef(msgType);
- AwtToolkit::GetInstance().SyncCall(AwtTrayIcon::_DisplayMessage, dms);
- // global ref is deleted in _DisplayMessage
- }
+ AwtToolkit::GetInstance().SyncCall(AwtTrayIcon::_DisplayMessage, dms);
+ // global ref is deleted in _DisplayMessage
CATCH_BAD_ALLOC(NULL);
}
--- a/jdk/src/windows/native/sun/windows/awt_TrayIcon.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.h Thu Feb 26 14:25:55 2009 -0800
@@ -36,57 +36,11 @@
#define TRAY_ICON_X_HOTSPOT 0
#define TRAY_ICON_Y_HOTSPOT 0
-#define TRAY_ICON_TOOLTIP_MAX_SIZE (IS_WIN2000 ? 128 : 64)
+#define TRAY_ICON_TOOLTIP_MAX_SIZE 128
#define TRAY_ICON_BALLOON_TITLE_MAX_SIZE 64
#define TRAY_ICON_BALLOON_INFO_MAX_SIZE 256
-// **********************************************************************
-// The following definitions are duplicates for those from the shellapi.h
-// **********************************************************************
-
-#define AWT_NOTIFYICON_VERSION 3
-
-#define AWT_NIM_SETVERSION 0x00000004
-
-#define AWT_NIN_SELECT (WM_USER + 0)
-#define AWT_NINF_KEY 0x1
-#define AWT_NIN_KEYSELECT (AWT_NIN_SELECT | AWT_NINF_KEY)
-#define AWT_NIN_BALLOONSHOW (WM_USER + 2)
-#define AWT_NIN_BALLOONHIDE (WM_USER + 3)
-#define AWT_NIN_BALLOONTIMEOUT (WM_USER + 4)
-#define AWT_NIN_BALLOONUSERCLICK (WM_USER + 5)
-
-#define AWT_NIIF_NONE 0x00000000
-#define AWT_NIIF_INFO 0x00000001
-#define AWT_NIIF_WARNING 0x00000002
-#define AWT_NIIF_ERROR 0x00000003
-
-#define AWT_NIF_INFO 0x00000010
-
-typedef struct _AWT_NOTIFYICONDATA {
- DWORD cbSize;
- HWND hWnd;
- UINT uID;
- UINT uFlags;
- UINT uCallbackMessage;
- HICON hIcon;
- TCHAR szTip[128];
-
- DWORD dwState; // _WIN32_IE >= 0x0500
- DWORD dwStateMask;
- TCHAR szInfo[256];
- union {
- UINT uTimeout;
- UINT uVersion;
- } DUMMYUNIONNAME;
- TCHAR szInfoTitle[64];
- DWORD dwInfoFlags;
-
- GUID guidItem; // _WIN32_IE >= 0x600
-} AWT_NOTIFYICONDATA, *PAWT_NOTIFYICONDATA;
-
-
/************************************************************************
* AwtTrayIcon class
*/
@@ -174,7 +128,7 @@
static int sm_instCount;
private:
- AWT_NOTIFYICONDATA m_nid;
+ NOTIFYICONDATA m_nid;
/* A bitmask keeps the button's numbers as MK_LBUTTON, MK_MBUTTON, MK_RBUTTON
* which are allowed to
--- a/jdk/src/windows/native/sun/windows/awt_Unicode.cpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright 1996-2003 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 "awt.h"
-
-LPWSTR J2WHelper1(LPWSTR lpw, LPWSTR lpj, int offset, int nChars) {
- memcpy(lpw, lpj + offset, nChars*2);
- lpw[nChars] = '\0';
- return lpw;
-}
-
-LPWSTR JNI_J2WHelper1(JNIEnv *env, LPWSTR lpwstr, jstring jstr) {
-
- int len = env->GetStringLength(jstr);
-
- env->GetStringRegion(jstr, 0, len, lpwstr);
- lpwstr[len] = '\0';
-
- return lpwstr;
-}
-
-LPWSTR J2WHelper(LPWSTR lpw, LPWSTR lpj, int nChars) {
- return J2WHelper1(lpw, lpj, 0, nChars);
-}
--- a/jdk/src/windows/native/sun/windows/awt_Unicode.h Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright 1996-2003 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.
- */
-
-/*
- * Unicode to ANSI string conversion macros, based on a slide from a
- * presentation by Asmus Freytag. These must be macros, since the
- * alloca() has to be in the caller's stack space.
- */
-
-#ifndef AWT_UNICODE_H
-#define AWT_UNICODE_H
-
-#include <malloc.h>
-
-// Get a Unicode string copy of a Java String object (Java String aren't
-// null-terminated).
-extern LPWSTR J2WHelper(LPWSTR lpw, LPWSTR lpj, int nChars);
-extern LPWSTR J2WHelper1(LPWSTR lpw, LPWSTR lpj, int offset, int nChars);
-
-extern LPWSTR JNI_J2WHelper1(JNIEnv *env, LPWSTR lpw, jstring jstr);
-
-#define TO_WSTRING(jstr) \
- ((jstr == NULL) ? NULL : \
- (JNI_J2WHelper1(env, (LPWSTR) alloca((env->GetStringLength(jstr)+1)*2), \
- jstr) \
- ))
-
-#endif // AWT_UNICODE_H
--- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -23,12 +23,12 @@
* have any questions.
*/
-#include <windows.h>
#include "awt.h"
#include <sun_awt_Win32GraphicsConfig.h>
#include "awt_Win32GraphicsConfig.h"
#include "awt_Canvas.h"
#include "awt_Win32GraphicsDevice.h"
+#include "Devices.h"
//Info for building a ColorModel
#include "java_awt_image_DataBuffer.h"
@@ -93,8 +93,8 @@
clazz = env->FindClass("java/awt/Rectangle");
mid = env->GetMethodID(clazz, "<init>", "(IIII)V");
if (mid != 0) {
- RECT rRW = {0,0,0,0};
- if( TRUE == ::MonitorBounds(AwtWin32GraphicsDevice::GetMonitor(screen), &rRW) ) {
+ RECT rRW = {0, 0, 0, 0};
+ if (TRUE == MonitorBounds(AwtWin32GraphicsDevice::GetMonitor(screen), &rRW)) {
bounds = env->NewObject(clazz, mid,
rRW.left, rRW.top,
rRW.right - rRW.left,
--- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -37,19 +37,17 @@
* array index.
*/
-#include <windows.h>
-#include <jni.h>
#include <awt.h>
#include <sun_awt_Win32GraphicsDevice.h>
#include "awt_Canvas.h"
#include "awt_Win32GraphicsDevice.h"
+#include "awt_Window.h"
#include "java_awt_Transparency.h"
#include "java_awt_color_ColorSpace.h"
#include "sun_awt_Win32GraphicsDevice.h"
#include "java_awt_image_DataBuffer.h"
#include "dither.h"
#include "img_util_md.h"
-#include "awt_dlls.h"
#include "Devices.h"
uns_ordered_dither_array img_oda_alpha;
@@ -72,7 +70,7 @@
* device, and information on whether the primary device is palettized.
*/
AwtWin32GraphicsDevice::AwtWin32GraphicsDevice(int screen,
- MHND mhnd, Devices *arr)
+ HMONITOR mhnd, Devices *arr)
{
this->screen = screen;
this->devicesArray = arr;
@@ -83,8 +81,8 @@
cData = NULL;
gpBitmapInfo = NULL;
monitor = mhnd;
- pMonitorInfo = (PMONITOR_INFO)new MONITOR_INFO_EXTENDED;
- pMonitorInfo->dwSize = sizeof(MONITOR_INFO_EXTENDED);
+ pMonitorInfo = new MONITORINFOEX;
+ pMonitorInfo->cbSize = sizeof(MONITORINFOEX);
::GetMonitorInfo(monitor, pMonitorInfo);
// Set primary device info: other devices will need to know
@@ -93,7 +91,7 @@
HDC hDC = this->GetDC();
colorData->bitsperpixel = ::GetDeviceCaps(hDC, BITSPIXEL);
this->ReleaseDC(hDC);
- if (MONITOR_INFO_FLAG_PRIMARY & pMonitorInfo->dwFlags) {
+ if (MONITORINFOF_PRIMARY & pMonitorInfo->dwFlags) {
primaryIndex = screen;
if (colorData->bitsperpixel > 8) {
primaryPalettized = FALSE;
@@ -124,6 +122,24 @@
}
}
+HDC AwtWin32GraphicsDevice::MakeDCFromMonitor(HMONITOR hmMonitor) {
+ HDC retCode = NULL;
+ if (NULL != hmMonitor) {
+ MONITORINFOEX mieInfo;
+
+ memset((void*)(&mieInfo), 0, sizeof(MONITORINFOEX));
+ mieInfo.cbSize = sizeof(MONITORINFOEX);
+
+ if (TRUE == ::GetMonitorInfo(hmMonitor, (LPMONITORINFOEX)(&mieInfo))) {
+ HDC hDC = CreateDC(mieInfo.szDevice, NULL, NULL, NULL);
+ if (NULL != hDC) {
+ retCode = hDC;
+ }
+ }
+ }
+ return retCode;
+}
+
HDC AwtWin32GraphicsDevice::GetDC()
{
return MakeDCFromMonitor(monitor);
@@ -164,7 +180,7 @@
VERIFY(::GetDIBits(hBMDC, hBM, 0, 1, NULL, gpBitmapInfo, DIB_RGB_COLORS));
if (colorData->bitsperpixel > 8) {
- if (MONITOR_INFO_FLAG_PRIMARY & pMonitorInfo->dwFlags) {
+ if (MONITORINFOF_PRIMARY & pMonitorInfo->dwFlags) {
primaryPalettized = FALSE;
}
if (colorData->bitsperpixel != 24) { // 15, 16, or 32 bpp
@@ -250,7 +266,7 @@
((int *)gpBitmapInfo->bmiColors)[2] = 0xff0000;
}
} else {
- if (MONITOR_INFO_FLAG_PRIMARY & pMonitorInfo->dwFlags) {
+ if (MONITORINFOF_PRIMARY & pMonitorInfo->dwFlags) {
primaryPalettized = TRUE;
}
gpBitmapInfo->bmiHeader.biBitCount = 8;
@@ -565,8 +581,8 @@
*/
int AwtWin32GraphicsDevice::DeviceIndexForWindow(HWND hWnd)
{
- MHND mon = MonitorFromWindow(hWnd, MONITOR_DEFAULT_TO_NEAR);
- int screen = AwtWin32GraphicsDevice::GetScreenFromMHND(mon);
+ HMONITOR mon = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
+ int screen = AwtWin32GraphicsDevice::GetScreenFromHMONITOR(mon);
return screen;
}
@@ -645,14 +661,14 @@
return devices->GetDevice(deviceIndex)->GetColorModel(env, dynamic);
}
-MONITOR_INFO *AwtWin32GraphicsDevice::GetMonitorInfo(int deviceIndex)
+LPMONITORINFO AwtWin32GraphicsDevice::GetMonitorInfo(int deviceIndex)
{
Devices::InstanceAccess devices;
return devices->GetDevice(deviceIndex)->GetMonitorInfo();
}
/**
- * This function updates the data in the MONITOR_INFO structure pointed to by
+ * This function updates the data in the MONITORINFOEX structure pointed to by
* pMonitorInfo for all monitors on the system. Added for 4654713.
*/
void AwtWin32GraphicsDevice::ResetAllMonitorInfo()
@@ -660,14 +676,14 @@
Devices::InstanceAccess devices;
int devicesNum = devices->GetNumDevices();
for (int deviceIndex = 0; deviceIndex < devicesNum; deviceIndex++) {
- MHND monitor = devices->GetDevice(deviceIndex)->GetMonitor();
+ HMONITOR monitor = devices->GetDevice(deviceIndex)->GetMonitor();
::GetMonitorInfo(monitor,
devices->GetDevice(deviceIndex)->pMonitorInfo);
}
}
void AwtWin32GraphicsDevice::DisableOffscreenAccelerationForDevice(
- MHND hMonitor)
+ HMONITOR hMonitor)
{
Devices::InstanceAccess devices;
if (hMonitor == NULL) {
@@ -682,7 +698,7 @@
}
}
-MHND AwtWin32GraphicsDevice::GetMonitor(int deviceIndex)
+HMONITOR AwtWin32GraphicsDevice::GetMonitor(int deviceIndex)
{
Devices::InstanceAccess devices;
return devices->GetDevice(deviceIndex)->GetMonitor();
@@ -741,30 +757,31 @@
return MakeDCFromMonitor(dev->GetMonitor());
}
-/** Compare elements of MONITOR_INFO structures for the given MHNDs.
+/** Compare elements of MONITORINFOEX structures for the given HMONITORs.
* If equal, return TRUE
*/
-BOOL AwtWin32GraphicsDevice::AreSameMonitors(MHND mon1, MHND mon2) {
+BOOL AwtWin32GraphicsDevice::AreSameMonitors(HMONITOR mon1, HMONITOR mon2) {
J2dTraceLn2(J2D_TRACE_INFO,
"AwtWin32GraphicsDevice::AreSameMonitors mhnd1=%x mhnd2=%x",
mon1, mon2);
DASSERT(mon1 != NULL);
DASSERT(mon2 != NULL);
- MONITOR_INFO mi1;
- MONITOR_INFO mi2;
+ MONITORINFOEX mi1;
+ MONITORINFOEX mi2;
+
+ memset((void*)(&mi1), 0, sizeof(MONITORINFOEX));
+ mi1.cbSize = sizeof(MONITORINFOEX);
+ memset((void*)(&mi2), 0, sizeof(MONITORINFOEX));
+ mi2.cbSize = sizeof(MONITORINFOEX);
- memset((void*)(&mi1),0,sizeof(MONITOR_INFO));
- mi1.dwSize = sizeof(MONITOR_INFO);
- memset((void*)(&mi2),0,sizeof(MONITOR_INFO));
- mi2.dwSize = sizeof(MONITOR_INFO);
-
- if (::GetMonitorInfo(mon1,&mi1) != 0 &&
- ::GetMonitorInfo(mon2,&mi2) != 0 ) {
-
- if (::EqualRect(&mi1.rMonitor,&mi2.rMonitor) &&
- ::EqualRect(&mi1.rWork,&mi2.rWork) &&
- mi1.dwFlags == mi1.dwFlags) {
+ if (::GetMonitorInfo(mon1, &mi1) != 0 &&
+ ::GetMonitorInfo(mon2, &mi2) != 0 )
+ {
+ if (::EqualRect(&mi1.rcMonitor, &mi2.rcMonitor) &&
+ ::EqualRect(&mi1.rcWork, &mi2.rcWork) &&
+ (mi1.dwFlags == mi1.dwFlags))
+ {
J2dTraceLn(J2D_TRACE_VERBOSE, " the monitors are the same");
return TRUE;
@@ -774,15 +791,15 @@
return FALSE;
}
-int AwtWin32GraphicsDevice::GetScreenFromMHND(MHND mon) {
+int AwtWin32GraphicsDevice::GetScreenFromHMONITOR(HMONITOR mon) {
J2dTraceLn1(J2D_TRACE_INFO,
- "AwtWin32GraphicsDevice::GetScreenFromMHND mhnd=%x", mon);
+ "AwtWin32GraphicsDevice::GetScreenFromHMONITOR mhnd=%x", mon);
DASSERT(mon != NULL);
Devices::InstanceAccess devices;
for (int i = 0; i < devices->GetNumDevices(); i++) {
- MHND mhnd = devices->GetDevice(i)->GetMonitor();
+ HMONITOR mhnd = devices->GetDevice(i)->GetMonitor();
if (AreSameMonitors(mon, mhnd)) {
J2dTraceLn1(J2D_TRACE_VERBOSE, " Found device: %d", i);
return i;
@@ -790,8 +807,8 @@
}
J2dTraceLn1(J2D_TRACE_WARNING,
- "AwtWin32GraphicsDevice::GetScreenFromMHND(): "\
- "couldn't find screen for MHND %x, returning default", mon);
+ "AwtWin32GraphicsDevice::GetScreenFromHMONITOR(): "\
+ "couldn't find screen for HMONITOR %x, returning default", mon);
return AwtWin32GraphicsDevice::GetDefaultDeviceIndex();
}
@@ -1076,19 +1093,19 @@
* of the structure pointed to by lpDisplayDevice is undefined.
*/
static BOOL
-GetAttachedDisplayDevice(int screen, _DISPLAY_DEVICE *lpDisplayDevice)
+GetAttachedDisplayDevice(int screen, DISPLAY_DEVICE *lpDisplayDevice)
{
DWORD dwDeviceNum = 0;
- lpDisplayDevice->dwSize = sizeof(_DISPLAY_DEVICE);
+ lpDisplayDevice->cb = sizeof(DISPLAY_DEVICE);
while (EnumDisplayDevices(NULL, dwDeviceNum, lpDisplayDevice, 0) &&
dwDeviceNum < 20) // avoid infinite loop with buggy drivers
{
- if (lpDisplayDevice->dwFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) {
+ if (lpDisplayDevice->StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) {
Devices::InstanceAccess devices;
- MONITOR_INFO_EXTENDED *pMonInfo =
- (PMONITOR_INFO_EXTENDED) devices->GetDevice(screen)->GetMonitorInfo();
+ MONITORINFOEX *pMonInfo =
+ (LPMONITORINFOEX)devices->GetDevice(screen)->GetMonitorInfo();
// make sure the device names match
- if (wcscmp(pMonInfo->strDevice, lpDisplayDevice->strDevName) == 0) {
+ if (wcscmp(pMonInfo->szDevice, lpDisplayDevice->DeviceName) == 0) {
return TRUE;
}
}
@@ -1114,9 +1131,9 @@
dm.dmSize = sizeof(dm);
dm.dmDriverExtra = 0;
- _DISPLAY_DEVICE displayDevice;
+ DISPLAY_DEVICE displayDevice;
if (GetAttachedDisplayDevice(screen, &displayDevice)) {
- pName = displayDevice.strDevName;
+ pName = displayDevice.DeviceName;
}
if (!EnumDisplaySettings(pName, ENUM_CURRENT_SETTINGS, &dm))
{
@@ -1156,7 +1173,7 @@
// ChangeDisplaySettingsEx is not available on NT,
// so it'd be nice not to break it if we can help it.
if (screen == AwtWin32GraphicsDevice::GetDefaultDeviceIndex()) {
- if (ChangeDisplaySettings(&dm, CDS_FULLSCREEN) !=
+ if (::ChangeDisplaySettings(&dm, CDS_FULLSCREEN) !=
DISP_CHANGE_SUCCESSFUL)
{
JNU_ThrowInternalError(env,
@@ -1165,15 +1182,9 @@
return;
}
- // make sure the function pointer for fn_change_display_settings_ex
- // is initialized
- load_user_procs();
-
- _DISPLAY_DEVICE displayDevice;
- if (fn_change_display_settings_ex == NULL ||
- !GetAttachedDisplayDevice(screen, &displayDevice) ||
- ((*fn_change_display_settings_ex)
- (displayDevice.strDevName, &dm, NULL, CDS_FULLSCREEN, NULL) !=
+ DISPLAY_DEVICE displayDevice;
+ if (!GetAttachedDisplayDevice(screen, &displayDevice) ||
+ (::ChangeDisplaySettingsEx(displayDevice.DeviceName, &dm, NULL, CDS_FULLSCREEN, NULL) !=
DISP_CHANGE_SUCCESSFUL))
{
JNU_ThrowInternalError(env,
@@ -1231,11 +1242,11 @@
DEVMODE dm;
LPTSTR pName = NULL;
- _DISPLAY_DEVICE displayDevice;
+ DISPLAY_DEVICE displayDevice;
if (GetAttachedDisplayDevice(screen, &displayDevice)) {
- pName = displayDevice.strDevName;
+ pName = displayDevice.DeviceName;
}
dm.dmSize = sizeof(dm);
--- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h Thu Feb 26 14:25:55 2009 -0800
@@ -32,7 +32,6 @@
} // extern "C"
#include "colordata.h"
#include "awt_Palette.h"
-#include "awt_MMStub.h"
#include "Devices.h"
class AwtPalette;
@@ -40,7 +39,7 @@
class AwtWin32GraphicsDevice {
public:
- AwtWin32GraphicsDevice(int screen, MHND mhnd, Devices *arr);
+ AwtWin32GraphicsDevice(int screen, HMONITOR mhnd, Devices *arr);
~AwtWin32GraphicsDevice();
void UpdateDeviceColorState();
void SetGrayness(int grayValue);
@@ -60,8 +59,8 @@
HPALETTE GetPalette();
ColorData *GetColorData() { return cData; }
int GetBitDepth() { return colorData->bitsperpixel; }
- MHND GetMonitor() { return monitor; }
- MONITOR_INFO *GetMonitorInfo() { return pMonitorInfo; }
+ HMONITOR GetMonitor() { return monitor; }
+ LPMONITORINFO GetMonitorInfo() { return pMonitorInfo; }
jobject GetJavaDevice() { return javaDevice; }
int GetDeviceIndex() { return screen; }
void Release();
@@ -78,14 +77,14 @@
static void UpdateDynamicColorModel(int deviceIndex);
static BOOL UpdateSystemPalette(int deviceIndex);
static HPALETTE GetPalette(int deviceIndex);
- static MHND GetMonitor(int deviceIndex);
- static MONITOR_INFO *GetMonitorInfo(int deviceIndex);
+ static HMONITOR GetMonitor(int deviceIndex);
+ static LPMONITORINFO GetMonitorInfo(int deviceIndex);
static void ResetAllMonitorInfo();
static BOOL IsPrimaryPalettized() { return primaryPalettized; }
static int GetDefaultDeviceIndex() { return primaryIndex; }
- static void DisableOffscreenAccelerationForDevice(MHND hMonitor);
+ static void DisableOffscreenAccelerationForDevice(HMONITOR hMonitor);
static HDC GetDCFromScreen(int screen);
- static int GetScreenFromMHND(MHND mon);
+ static int GetScreenFromHMONITOR(HMONITOR mon);
static int primaryIndex;
static BOOL primaryPalettized;
@@ -97,17 +96,19 @@
static jmethodID paletteChangedMID;
private:
- static BOOL AreSameMonitors(MHND mon1, MHND mon2);
+ static BOOL AreSameMonitors(HMONITOR mon1, HMONITOR mon2);
ImgColorData *colorData;
AwtPalette *palette;
ColorData *cData; // Could be static, but may sometime
// have per-device info in this structure
BITMAPINFO *gpBitmapInfo;
int screen;
- MHND monitor;
- MONITOR_INFO *pMonitorInfo;
+ HMONITOR monitor;
+ LPMONITORINFO pMonitorInfo;
jobject javaDevice;
Devices *devicesArray;
+
+ static HDC MakeDCFromMonitor(HMONITOR);
};
#endif AWT_WIN32GRAPHICSDEVICE_H
--- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,8 +23,6 @@
* have any questions.
*/
-#include <windows.h>
-#include <jni.h>
#include <awt.h>
#include <sun_awt_Win32GraphicsEnvironment.h>
#include "awt_Canvas.h"
@@ -188,44 +186,6 @@
return AwtWin32GraphicsDevice::GetDefaultDeviceIndex();
}
-#define FR_PRIVATE 0x10 /* from wingdi.h */
-typedef int (WINAPI *AddFontResourceExType)(LPCTSTR,DWORD,VOID*);
-typedef int (WINAPI *RemoveFontResourceExType)(LPCTSTR,DWORD,VOID*);
-
-static AddFontResourceExType procAddFontResourceEx = NULL;
-static RemoveFontResourceExType procRemoveFontResourceEx = NULL;
-
-static int winVer = -1;
-
-static int getWinVer() {
- if (winVer == -1) {
- OSVERSIONINFO osvi;
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx(&osvi);
- winVer = osvi.dwMajorVersion;
- if (winVer >= 5) {
- // REMIND verify on 64 bit windows
- HMODULE hGDI = LoadLibrary(TEXT("gdi32.dll"));
- if (hGDI != NULL) {
- procAddFontResourceEx =
- (AddFontResourceExType)GetProcAddress(hGDI,"AddFontResourceExW");
- if (procAddFontResourceEx == NULL) {
- winVer = 0;
- }
- procRemoveFontResourceEx =
- (RemoveFontResourceExType)GetProcAddress(hGDI,
- "RemoveFontResourceExW");
- if (procRemoveFontResourceEx == NULL) {
- winVer = 0;
- }
- FreeLibrary(hGDI);
- }
- }
- }
-
- return winVer;
-}
-
/*
* Class: sun_awt_Win32GraphicsEnvironment
* Method: registerFontWithPlatform
@@ -236,9 +196,10 @@
jclass cl,
jstring fontName)
{
- if (getWinVer() >= 5 && procAddFontResourceEx != NULL) {
- LPTSTR file = (LPTSTR)JNU_GetStringPlatformChars(env, fontName, NULL);
- (*procAddFontResourceEx)(file, FR_PRIVATE, NULL);
+ LPTSTR file = (LPTSTR)JNU_GetStringPlatformChars(env, fontName, JNI_FALSE);
+ if (file) {
+ ::AddFontResourceEx(file, FR_PRIVATE, NULL);
+ JNU_ReleaseStringPlatformChars(env, fontName, file);
}
}
@@ -255,9 +216,10 @@
jclass cl,
jstring fontName)
{
- if (getWinVer() >= 5 && procRemoveFontResourceEx != NULL) {
- LPTSTR file = (LPTSTR)JNU_GetStringPlatformChars(env, fontName, NULL);
- (*procRemoveFontResourceEx)(file, FR_PRIVATE, NULL);
+ LPTSTR file = (LPTSTR)JNU_GetStringPlatformChars(env, fontName, JNI_FALSE);
+ if (file) {
+ ::RemoveFontResourceEx(file, FR_PRIVATE, NULL);
+ JNU_ReleaseStringPlatformChars(env, fontName, file);
}
}
--- a/jdk/src/windows/native/sun/windows/awt_Window.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awt_Window.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -23,7 +23,7 @@
* have any questions.
*/
-#include <windowsx.h>
+#include "awt.h"
#include "awt_Component.h"
#include "awt_Container.h"
@@ -32,7 +32,6 @@
#include "awt_Panel.h"
#include "awt_Toolkit.h"
#include "awt_Window.h"
-#include "awt_dlls.h"
#include "awt_Win32GraphicsDevice.h"
#include "awt_BitmapUtil.h"
#include "awt_IconCursor.h"
@@ -42,6 +41,8 @@
#include <java_awt_event_ComponentEvent.h>
#include "sun_awt_windows_WCanvasPeer.h"
+#include <windowsx.h>
+
#if !defined(__int3264)
typedef __int32 LONG_PTR;
#endif // __int3264
@@ -501,8 +502,7 @@
// which might involve tagging java.awt.Window instances with a semantic
// property so platforms can animate/decorate/etc accordingly.
//
- if ((IS_WIN98 || IS_WIN2000) &&
- JNU_IsInstanceOfByName(env, target, "com/sun/java/swing/plaf/windows/WindowsPopupWindow") > 0)
+ if (JNU_IsInstanceOfByName(env, target, "com/sun/java/swing/plaf/windows/WindowsPopupWindow") > 0)
{
// need this global ref to make the class unloadable (see 6500204)
static jclass windowsPopupWindowCls;
@@ -535,13 +535,8 @@
windowType = env->GetIntField(target, windowTypeFID);
if (windowType == windowTYPES[TOOLTIP]) {
- if (IS_WIN2000) {
- SystemParametersInfo(SPI_GETTOOLTIPANIMATION, 0, &animateflag, 0);
- SystemParametersInfo(SPI_GETTOOLTIPFADE, 0, &fadeflag, 0);
- } else {
- // use same setting as menus
- SystemParametersInfo(SPI_GETMENUANIMATION, 0, &animateflag, 0);
- }
+ SystemParametersInfo(SPI_GETTOOLTIPANIMATION, 0, &animateflag, 0);
+ SystemParametersInfo(SPI_GETTOOLTIPFADE, 0, &fadeflag, 0);
if (animateflag) {
// AW_BLEND currently produces runtime parameter error
// animateStyle = fadeflag? AW_BLEND : AW_SLIDE | AW_VER_POSITIVE;
@@ -551,13 +546,10 @@
windowType == windowTYPES[POPUPMENU]) {
SystemParametersInfo(SPI_GETMENUANIMATION, 0, &animateflag, 0);
if (animateflag) {
-
- if (IS_WIN2000) {
- SystemParametersInfo(SPI_GETMENUFADE, 0, &fadeflag, 0);
- if (fadeflag) {
- // AW_BLEND currently produces runtime parameter error
- //animateStyle = AW_BLEND;
- }
+ SystemParametersInfo(SPI_GETMENUFADE, 0, &fadeflag, 0);
+ if (fadeflag) {
+ // AW_BLEND currently produces runtime parameter error
+ //animateStyle = AW_BLEND;
}
if (animateStyle == 0 && !fadeflag) {
animateStyle = AW_SLIDE;
@@ -578,38 +570,18 @@
}
if (animateStyle != 0) {
- load_user_procs();
-
- if (fn_animate_window != NULL) {
- BOOL result = (*fn_animate_window)(hWnd, (DWORD)200, animateStyle);
- if (result == 0) {
- LPTSTR msgBuffer = NULL;
- FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR)&msgBuffer, // it's an output parameter when allocate buffer is used
- 0,
- NULL);
-
- if (msgBuffer == NULL) {
- msgBuffer = TEXT("<Could not get GetLastError() message text>");
- }
- _ftprintf(stderr,TEXT("AwtWindow::Show: AnimateWindow: "));
- _ftprintf(stderr,msgBuffer);
- LocalFree(msgBuffer);
- } else {
- // WM_PAINT is not automatically sent when invoking AnimateWindow,
- // so force an expose event
- RECT rect;
- ::GetWindowRect(hWnd,&rect);
- ::ScreenToClient(hWnd, (LPPOINT)&rect);
- ::InvalidateRect(hWnd,&rect,TRUE);
- ::UpdateWindow(hWnd);
- done = TRUE;
- }
+ BOOL result = ::AnimateWindow(hWnd, (DWORD)200, animateStyle);
+ if (!result) {
+ // TODO: log message
+ } else {
+ // WM_PAINT is not automatically sent when invoking AnimateWindow,
+ // so force an expose event
+ RECT rect;
+ ::GetWindowRect(hWnd,&rect);
+ ::ScreenToClient(hWnd, (LPPOINT)&rect);
+ ::InvalidateRect(hWnd, &rect, TRUE);
+ ::UpdateWindow(hWnd);
+ done = TRUE;
}
}
}
@@ -1205,16 +1177,17 @@
}
/* draw warning text */
- LPWSTR text = TO_WSTRING(warningString);
+ LPCWSTR text = JNU_GetStringPlatformChars(env, warningString, NULL);
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,
+ VERIFY(::ExtTextOut(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);
+ JNU_ReleaseStringPlatformChars(env, warningString, text);
}
env->DeleteLocalRef(target);
@@ -1360,13 +1333,13 @@
}
int AwtWindow::GetScreenImOn() {
- MHND hmon;
+ HMONITOR hmon;
int scrnNum;
- hmon = ::MonitorFromWindow(GetHWnd(), MONITOR_DEFAULT_TO_PRIMARY);
+ hmon = ::MonitorFromWindow(GetHWnd(), MONITOR_DEFAULTTOPRIMARY);
DASSERT(hmon != NULL);
- scrnNum = AwtWin32GraphicsDevice::GetScreenFromMHND(hmon);
+ scrnNum = AwtWin32GraphicsDevice::GetScreenFromHMONITOR(hmon);
DASSERT(scrnNum > -1);
return scrnNum;
@@ -1619,10 +1592,10 @@
if (::IsWindow(w->GetHWnd()))
{
int length = env->GetStringLength(title);
- WCHAR *buffer = new WCHAR[length + 1];
- env->GetStringRegion(title, 0, length, buffer);
+ TCHAR *buffer = new TCHAR[length + 1];
+ env->GetStringRegion(title, 0, length, reinterpret_cast<jchar*>(buffer));
buffer[length] = L'\0';
- VERIFY(::SetWindowTextW(w->GetHWnd(), buffer));
+ VERIFY(::SetWindowText(w->GetHWnd(), buffer));
delete[] buffer;
}
ret:
@@ -1967,13 +1940,11 @@
window->m_isFocusableWindow = isFocusableWindow;
- if (IS_WIN2000) {
- if (!window->m_isFocusableWindow) {
- LONG isPopup = window->GetStyle() & WS_POPUP;
- window->SetStyleEx(window->GetStyleEx() | (isPopup ? 0 : WS_EX_APPWINDOW) | AWT_WS_EX_NOACTIVATE);
- } else {
- window->SetStyleEx(window->GetStyleEx() & ~WS_EX_APPWINDOW & ~AWT_WS_EX_NOACTIVATE);
- }
+ if (!window->m_isFocusableWindow) {
+ LONG isPopup = window->GetStyle() & WS_POPUP;
+ window->SetStyleEx(window->GetStyleEx() | (isPopup ? 0 : WS_EX_APPWINDOW) | AWT_WS_EX_NOACTIVATE);
+ } else {
+ window->SetStyleEx(window->GetStyleEx() & ~WS_EX_APPWINDOW & ~AWT_WS_EX_NOACTIVATE);
}
ret:
--- a/jdk/src/windows/native/sun/windows/awt_dlls.cpp Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +0,0 @@
-/*
- * Copyright 1999-2003 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 "awt.h"
-#include "awt_dlls.h"
-
-/*
- * To reduce memory footprint we don't statically link to COMDLG32.DLL
- * and SHELL32. Instead we programatically load them only when they are
- * needed.
- */
-
-PrintDlgType AwtCommDialog::do_print_dlg;
-PageSetupDlgType AwtCommDialog::do_page_setup_dlg;
-GetOpenFileNameType AwtCommDialog::get_open_file_name;
-GetSaveFileNameType AwtCommDialog::get_save_file_name;
-GetExtendedErrorType AwtCommDialog::get_dlg_extended_error;
-
-/***********************************************************************/
-
-DWORD
-AwtCommDialog::CommDlgExtendedError(VOID) {
- AwtCommDialog::load_comdlg_procs();
- return static_cast<DWORD>(reinterpret_cast<INT_PTR>(
- AwtToolkit::GetInstance().
- InvokeFunction(reinterpret_cast<void *(*)(void)>
- (AwtCommDialog::GetExtendedErrorWrapper))));
-}
-
-BOOL
-AwtCommDialog::PrintDlg(LPPRINTDLG data) {
- AwtCommDialog::load_comdlg_procs();
- return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
- AwtToolkit::GetInstance().
- InvokeFunction(reinterpret_cast<void *(*)(void *)>
- (AwtCommDialog::PrintDlgWrapper), data)));
-}
-
-BOOL
-AwtCommDialog::PageSetupDlg(LPPAGESETUPDLG data) {
- AwtCommDialog::load_comdlg_procs();
- return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
- AwtToolkit::GetInstance().
- InvokeFunction(reinterpret_cast<void *(*)(void *)>
- (AwtCommDialog::PageSetupDlgWrapper), data)));
-}
-
-/*
- * Load the COMDLG32.dll and get pointers to various procedures.
- */
-
-void
-AwtCommDialog::load_comdlg_procs()
-{
- static int initialized = 0;
- HMODULE lib = NULL;
- if (initialized) {
- return;
- }
- lib = LoadLibrary(TEXT("COMDLG32.DLL"));
- HMODULE libUnicows = UnicowsLoader::GetModuleHandle();
- do_print_dlg = (PrintDlgType)GetProcAddress(IS_WIN95 ? libUnicows : lib, "PrintDlgW");
- do_page_setup_dlg = (PageSetupDlgType)GetProcAddress(IS_WIN95 ? libUnicows : lib, "PageSetupDlgW");
- get_open_file_name = (GetOpenFileNameType)GetProcAddress(IS_WIN95 ? libUnicows : lib, "GetOpenFileNameW");
- get_save_file_name = (GetSaveFileNameType)GetProcAddress(IS_WIN95 ? libUnicows : lib, "GetSaveFileNameW");
- get_dlg_extended_error = (GetExtendedErrorType)GetProcAddress(lib, "CommDlgExtendedError");
- initialized = 1;
-}
-
-/***********************************************************************/
-
-DragQueryFileType do_drag_query_file;
-GetPathFromIDListType get_path_from_idlist;
-
-/*
- * Load the SHELL32.dll and get pointers to various procedures.
- */
-
-void
-load_shell_procs()
-{
- static int initialized = 0;
- HMODULE lib = NULL;
- if (initialized) {
- return;
- }
-
- if (IS_WIN95) {
- lib = UnicowsLoader::GetModuleHandle();
- } else {
- lib = LoadLibrary(TEXT("SHELL32.DLL"));
- }
-
- do_drag_query_file = (DragQueryFileType)GetProcAddress(lib, "DragQueryFileW");
- get_path_from_idlist = (GetPathFromIDListType)GetProcAddress(lib,
- "SHGetPathFromIDListW");
- initialized = 1;
-}
-
-/***********************************************************************/
-
-AnimateWindowType fn_animate_window;
-ChangeDisplaySettingsExType fn_change_display_settings_ex;
-
-/*
- * Load the USER32.dll and get pointers to various procedures.
- */
-
-void
-load_user_procs()
-{
- static int initialized = 0;
- HMODULE lib = NULL;
- if (initialized) {
- return;
- }
- lib = LoadLibrary(TEXT("USER32.DLL"));
- HMODULE libUnicows = UnicowsLoader::GetModuleHandle();
- fn_animate_window = (AnimateWindowType)GetProcAddress(lib, "AnimateWindow");
- fn_change_display_settings_ex = (ChangeDisplaySettingsExType)
- GetProcAddress(IS_WIN95 ? libUnicows : lib, "ChangeDisplaySettingsExW");
- initialized = 1;
-}
-
-/***********************************************************************/
-
-GetFileVersionInfoSizeType get_file_version_info_size;
-GetFileVersionInfoType get_file_version_info;
-VerQueryValueType do_ver_query_value;
-
-/*
- * Load the VERSION.dll and get pointers to various procedures.
- */
-
-void
-load_version_procs()
-{
- static int initialized = 0;
- HMODULE lib = NULL;
- if (initialized) {
- return;
- }
-
- if (IS_WIN95) {
- lib = UnicowsLoader::GetModuleHandle();
- } else {
- lib = LoadLibrary(TEXT("VERSION.DLL"));
- }
-
- get_file_version_info_size =
- (GetFileVersionInfoSizeType)GetProcAddress(lib, "GetFileVersionInfoSizeW");
- get_file_version_info =
- (GetFileVersionInfoType)GetProcAddress(lib, "GetFileVersionInfoW");
- do_ver_query_value =
- (VerQueryValueType)GetProcAddress(lib, "VerQueryValueW");
- initialized = 1;
-}
-
-/***********************************************************************/
-
-#define MAX_KNOWN_VERSION 4
-
-/*
- * We are going to use an undocumented procedure RSRC32.DLL.
- * The safest will be to use it only for a finite set of known versions.
- */
-
-DWORD known_versions[MAX_KNOWN_VERSION][2] = {
- { 0x00040000, 0x000003B6 }, // WIN95\RETAIL
- // WIN95\RETAIL\UPGRADE
- // WIN95\OSR2
- // WIN95\OSR25
- // WIN95\international\RETAIL
- // WIN95\international\OSR2
-
- { 0x0004000A, 0x00000672 }, // WIN98\international\win98beta3
-
- { 0x0004000A, 0x000007CE }, // WIN98\RETAIL
- // WIN98\international\RETAIL
- // WIN98\SE
-
- { 0x0004005A, 0x00000BB8 } // WIN98ME
-};
-
-GetFreeSystemResourcesType get_free_system_resources = NULL;
-
-/*
- * Load the RSRC32.dll, check that it is a known version
- * and get the pointer to the undocumented procedure.
- */
-
-void
-load_rsrc32_procs()
-{
- static int initialized = 0;
- if (initialized) {
- return;
- }
- if (IS_NT) {
- // 4310028: Only load library on non-NT systems. The load
- // will always fail anyways. However, if a Win 9x OS is
- // also installed on the system, and the user's path
- // includes C:\WINDOWS\SYSTEM, or the equivalent, a really
- // ugly and annoying warning dialog will appear.
- initialized = 1;
- return;
- }
- HMODULE lib = LoadLibrary(TEXT("RSRC32.DLL"));
- if (lib != NULL) {
- TCHAR szFullPath[_MAX_PATH];
- DWORD dwVerHnd = 0;
- DWORD dwVersionInfoSize;
- LPBYTE lpVersionInfo;
- LPVOID lpBuffer;
- UINT uLength = 0;
-
- /*
- * We use undocumented procedure exported by RSRC32.DLL, so the
- * safest will be to check the library's version and only attempt
- * to get the procedure address if it's a known version.
- */
- if (::GetModuleFileName(lib, szFullPath, sizeof(szFullPath))) {
- load_version_procs();
- dwVersionInfoSize = (*get_file_version_info_size)(szFullPath, &dwVerHnd);
- if (dwVersionInfoSize) {
- lpVersionInfo = new BYTE[dwVersionInfoSize];
- (*get_file_version_info)(szFullPath, dwVerHnd,
- dwVersionInfoSize, lpVersionInfo);
- if ((*do_ver_query_value)(lpVersionInfo, TEXT("\\"), &lpBuffer, &uLength)) {
- VS_FIXEDFILEINFO *lpvsFixedFileInfo = (VS_FIXEDFILEINFO *)lpBuffer;
- DWORD dwFileVersionMS = lpvsFixedFileInfo->dwFileVersionMS;
- DWORD dwFileVersionLS = lpvsFixedFileInfo->dwFileVersionLS;
- for (int i = 0; i < MAX_KNOWN_VERSION; i++) {
- if ((known_versions[i][0] == dwFileVersionMS) &&
- (known_versions[i][1] == dwFileVersionLS)) {
- get_free_system_resources =
- (GetFreeSystemResourcesType)
- ::GetProcAddress(lib, "_MyGetFreeSystemResources32@4");
- break;
- }
- }
- }
- delete[] lpVersionInfo;
- }
- }
- }
- initialized = 1;
-}
-
-void
-load_rich_edit_library() {
- static int initialized = 0;
- BOOL isRichEdit32Needed = IS_WIN95 && !IS_WIN98;
-
- if (initialized) {
- return;
- }
-
- HMODULE lib = NULL;
- if (isRichEdit32Needed) {
- lib = ::LoadLibrary(TEXT("RICHED32.DLL"));
- } else {
- lib = ::LoadLibrary(TEXT("RICHED20.DLL"));
- }
- if (lib == NULL) {
- JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
- JNU_ThrowInternalError(env, "Can't load a rich edit DLL");
- } else if (isRichEdit32Needed) {
- // Richedit language checking logic is needed for RICHED32.DLL only.
- LPTSTR szFullPath = new TCHAR[_MAX_PATH];
- DWORD dwVerHnd = 0;
- DWORD dwVersionInfoSize;
- LPVOID lpVersionInfo;
- UINT uLength = 0;
- struct LANGANDCODEPAGE {
- WORD wLanguage;
- WORD wCodePage;
- } *lpTranslate;
-
- try {
- if (!IS_WIN2000 && ::GetModuleFileName(lib, szFullPath, _MAX_PATH)) {
- load_version_procs();
- dwVersionInfoSize = (*get_file_version_info_size)(szFullPath, &dwVerHnd);
- if (dwVersionInfoSize) {
- lpVersionInfo = new BYTE[dwVersionInfoSize];
- try {
- if ((*get_file_version_info)(szFullPath,
- dwVerHnd,
- dwVersionInfoSize,
- lpVersionInfo)
- && (*do_ver_query_value)(lpVersionInfo,
- TEXT("\\VarFileInfo\\Translation"),
- (LPVOID*)&lpTranslate,
- &uLength)) {
-
- if (::GetSystemMetrics(SM_DBCSENABLED)
- && LANGIDFROMLCID(::GetThreadLocale()) != lpTranslate[0].wLanguage) {
-
- JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
- if (env->PushLocalFrame(6) >= 0) {
- jstring keystr = env->NewStringUTF("AWT.InconsistentDLLsWarning");
- jstring defstr = env->NewStringUTF(
-"Text based operations may not work correctly due to \
-an inconsistent set of dynamic linking libraries (DLLs) installed on your \
-system. For more information on this problem and a suggested workaround \
-please see the Java(TM) 2 SDK, Standard Edition Release Notes \
-on java.sun.com.");
-
- jstring retstr =
- (jstring) JNU_CallStaticMethodByName(
- env,
- NULL,
- "java/awt/Toolkit",
- "getProperty",
- "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
- keystr,
- defstr).l;
-
- jboolean exception;
- jstring pkgstr = env->NewStringUTF("java.awt");
- jobject logger =
- (jobject) JNU_CallStaticMethodByName(
- env,
- &exception,
- "java/util/logging/Logger",
- "getLogger",
- "(Ljava/lang/String;)Ljava/util/logging/Logger;",
- pkgstr).l;
-
- jstring msgstr = (retstr) ? retstr : defstr;
- if (!exception) {
- JNU_CallMethodByName(
- env,
- NULL,
- logger,
- "warning",
- "(Ljava/lang/String;)V",
- msgstr);
- } else {
- LPCTSTR outstr = JNU_GetStringPlatformChars(env, msgstr, NULL);
- _ftprintf(stdout, TEXT("\nWARNING: %s\n"), outstr);
- fflush(stdout);
- JNU_ReleaseStringPlatformChars(env, msgstr, outstr);
- }
-
- env->PopLocalFrame(NULL);
- }
- }
- }
- } catch (...) {
- delete[] lpVersionInfo;
- throw;
- }
- delete[] lpVersionInfo;
- }
- }
- } catch (...) {
- delete[] szFullPath;
- throw;
- }
- delete[] szFullPath;
- }
- initialized = 1;
-}
-
-/***********************************************************************/
-
-bool AwtWinMM::initialized = false;
-AwtWinMM::PlaySoundWFunc* AwtWinMM::playSoundFunc = NULL;
-
-BOOL AwtWinMM::PlaySoundWrapper(LPCTSTR pszSound, HMODULE hmod, DWORD fdwSound) {
- load_winmm_procs();
- if (playSoundFunc == NULL) {
- return FALSE;
- }
- return (*playSoundFunc)(pszSound, hmod, fdwSound);
-}
-
-void AwtWinMM::load_winmm_procs() {
- if (initialized) {
- return;
- }
- HMODULE dll = NULL;
-
- if (IS_WIN95) {
- dll = UnicowsLoader::GetModuleHandle();
- } else {
- dll = ::LoadLibrary(TEXT("winmm.dll"));
- }
-
- if (dll == NULL) {
- return;
- }
- playSoundFunc =
- (PlaySoundWFunc*) GetProcAddress(dll, "PlaySoundW");
- if (playSoundFunc == NULL) {
- return;
- }
- initialized = true;
-}
--- a/jdk/src/windows/native/sun/windows/awt_dlls.h Sun Feb 22 17:21:13 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
- * Copyright 1999-2003 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 AWT_DLLS_H
-#define AWT_DLLS_H
-
-#include <commdlg.h>
-#include <shellapi.h>
-#include <shlobj.h>
-#include "awt_FileDialog.h"
-#include "awt_PrintDialog.h"
-
-/*
- * To reduce memory footprint we don't statically link to COMDLG32.DLL
- * and SHELL32. Instead we programatically load them only when they are
- * needed.
- */
-
-//---------------------------------------------------------------------------
-
-typedef BOOL (APIENTRY *PrintDlgType)(LPPRINTDLGW);
-typedef BOOL (APIENTRY *PageSetupDlgType)(LPPAGESETUPDLGW);
-typedef BOOL (APIENTRY *GetOpenFileNameType)(LPOPENFILENAMEW);
-typedef BOOL (APIENTRY *GetSaveFileNameType)(LPOPENFILENAMEW);
-typedef DWORD (APIENTRY *GetExtendedErrorType)(VOID);
-
-class AwtCommDialog {
-public:
- static DWORD CommDlgExtendedError(VOID);
-
- static BOOL PrintDlg(LPPRINTDLG data);
-
- static BOOL PageSetupDlg(LPPAGESETUPDLG data);
-
-private:
- static void load_comdlg_procs();
-
- // Use wrapper functions with default calling convention. If the
- // default isn't __stdcall, accessing the Win32 functions directly
- // will cause stack corruption if we cast away __stdcall.
- static BOOL PrintDlgWrapper(LPPRINTDLG data) {
- return (*do_print_dlg)(data);
- }
- static BOOL PageSetupDlgWrapper(LPPAGESETUPDLG data) {
- return (*do_page_setup_dlg)(data);
- }
- static BOOL GetOpenFileNameWrapper(LPOPENFILENAME data) {
- return (*get_open_file_name)(data);
- }
- static BOOL GetSaveFileNameWrapper(LPOPENFILENAME data) {
- return (*get_save_file_name)(data);
- }
- static DWORD GetExtendedErrorWrapper(VOID) {
- return (*get_dlg_extended_error)();
- }
-
- friend BOOL AwtFileDialog::GetOpenFileName(LPAWTOPENFILENAME);
- friend BOOL AwtFileDialog::GetSaveFileName(LPAWTOPENFILENAME);
- friend BOOL AwtPrintDialog::PrintDlg(LPPRINTDLG);
-
- static PrintDlgType do_print_dlg;
- static PageSetupDlgType do_page_setup_dlg;
- static GetOpenFileNameType get_open_file_name;
- static GetSaveFileNameType get_save_file_name;
- static GetExtendedErrorType get_dlg_extended_error;
-};
-
-//---------------------------------------------------------------------------
-
-// Dynamically load in SHELL32.DLL and define the procedure pointers listed below.
-extern void load_shell_procs();
-
-// Procedure pointers obtained from SHELL32.DLL
-// You must call load_shell_procs() before using any of these.
-typedef UINT (APIENTRY *DragQueryFileType)(HDROP,UINT,LPTSTR,UINT);
-typedef BOOL (APIENTRY *GetPathFromIDListType)(LPCITEMIDLIST,LPTSTR);
-extern DragQueryFileType do_drag_query_file;
-extern GetPathFromIDListType get_path_from_idlist;
-
-//---------------------------------------------------------------------------
-
-// Dynamically load in USER32.DLL and define the procedure pointers listed below.
-extern void load_user_procs();
-
-// Procedure pointers obtained from USER32.DLL
-// You must call load_user_procs() before using any of these.
-typedef BOOL (WINAPI *AnimateWindowType)(HWND,DWORD,DWORD);
-typedef LONG (WINAPI *ChangeDisplaySettingsExType)(LPCTSTR,LPDEVMODE,HWND,DWORD,LPVOID lParam);
-extern AnimateWindowType fn_animate_window;
-extern ChangeDisplaySettingsExType fn_change_display_settings_ex;
-
-//---------------------------------------------------------------------------
-
-// Dynamically load in VERSION.DLL and define the procedure pointers listed below.
-extern void load_version_procs();
-
-// Procedure pointers obtained from VERSION.DLL
-// You must call load_version_procs() before using any of these.
-typedef DWORD (APIENTRY *GetFileVersionInfoSizeType)(LPTSTR,LPDWORD);
-typedef BOOL (APIENTRY *GetFileVersionInfoType)(LPTSTR,DWORD,DWORD,LPVOID);
-typedef BOOL (APIENTRY *VerQueryValueType)(const LPVOID,LPTSTR,LPVOID*,PUINT);
-extern GetFileVersionInfoSizeType get_file_version_info_size;
-extern GetFileVersionInfoType get_file_version_info;
-extern VerQueryValueType do_ver_query_value;
-
-//---------------------------------------------------------------------------
-
-// Dynamically load in RSRC32.DLL and define the procedure pointers listed below.
-extern void load_rsrc32_procs();
-
-// Procedure pointers obtained from RSRC32.DLL
-// You must call load_rsrc32_procs() before using this procedure.
-
-/*
- * NOTE: even after load_rsrc32_procs() you must check that
- * the function pointer is valid before use.
- * It will be NULL in three cases:
- * 1.RSRC32.DLL not found. This means that Resource Meter
- * isn't installed.
- * 2.RSRC32.DLL can't be loaded. This happens on WinNT.
- * 3.Unknown version of RSRC32.DLL. This is undocumented
- * procedure, so the safest will be to use it only for
- * a finite set of known versions.
- */
-typedef UINT (APIENTRY *GetFreeSystemResourcesType)(UINT);
-
-extern GetFreeSystemResourcesType get_free_system_resources;
-
-extern void load_rich_edit_library();
-
-//---------------------------------------------------------------------------
-
-/*
- * Loading WINMM.DLL (the Windows MultiMedia library) is extremely
- * expensive. The AWT only uses it to play certain Windows sounds
- * (which are off by default) so we dynamically load it upon demand
- * instead of statically linking to it.
- */
-
-class AwtWinMM {
-public:
- static BOOL PlaySoundWrapper(LPCTSTR pszSound, HMODULE hmod, DWORD fdwSound);
-
-private:
- static void load_winmm_procs();
- static bool initialized;
- typedef BOOL WINAPI PlaySoundWFunc(LPCTSTR pszSound, HMODULE hmod, DWORD fdwSound);
- static PlaySoundWFunc* playSoundFunc;
-};
-
-#endif /* AWT_DLLS_H */
--- a/jdk/src/windows/native/sun/windows/awtmsg.h Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/awtmsg.h Thu Feb 26 14:25:55 2009 -0800
@@ -182,18 +182,6 @@
#endif //AW_BLEND
-
-
-// WM_MOUSEWHEEL should be WM_MOUSELAST, but
-// is not being defined. See winuser.h
-#ifdef WM_MOUSELAST
-#if WM_MOUSELAST <= 0x020A
-#define WM_AWT_MOUSELAST 0x020A
-#else
-#error Unexpected value of WM_MOUSELAST
-#endif //WM_MOUSELAST <= 0x0209
-#endif //WM_MOUSELAST
-
// AwtComponent messages
enum {
// 6427323: unfortunately WM_APP+nnn conflicts with edit control messages
--- a/jdk/src/windows/native/sun/windows/jawt.cpp Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/src/windows/native/sun/windows/jawt.cpp Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1999-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
@@ -26,6 +26,7 @@
#define _JNI_IMPLEMENTATION_
#include <jawt.h>
+#include "awt.h"
#include "awt_DrawingSurface.h"
/*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,136 @@
+/*
+ @test
+ @bug 6304473 6727884
+ @summary Tests that an exception on EDT is handled with ThreadGroup.uncaughtException()
+ @author artem.ananiev: area=awt.eventdispatching
+ @library ../../regtesthelpers
+ @build Util
+ @run main HandleExceptionOnEDT
+*/
+
+import java.awt.*;
+import java.awt.event.*;
+
+import test.java.awt.regtesthelpers.Util;
+
+public class HandleExceptionOnEDT
+{
+ private final static String EXCEPTION_MESSAGE = "A1234567890";
+
+ private static volatile boolean exceptionHandled = false;
+ private static volatile boolean mousePressed = false;
+
+ public static void main(String[] args)
+ {
+ final Thread.UncaughtExceptionHandler eh = new Thread.UncaughtExceptionHandler()
+ {
+ @Override
+ public void uncaughtException(Thread t, Throwable e)
+ {
+ if (e.getMessage().equals(EXCEPTION_MESSAGE))
+ {
+ exceptionHandled = true;
+ }
+ }
+ };
+
+ Frame f = new Frame("F");
+ f.setBounds(100, 100, 400, 300);
+ // set exception handler for EDT
+ f.addWindowListener(new WindowAdapter()
+ {
+ @Override
+ public void windowOpened(WindowEvent we)
+ {
+ Thread edt = Thread.currentThread();
+ edt.setUncaughtExceptionHandler(eh);
+ }
+ });
+ f.setVisible(true);
+
+ Robot r = Util.createRobot();
+ Util.waitForIdle(r);
+
+ // check exception without modal dialog
+ MouseListener exceptionListener = new MouseAdapter()
+ {
+ @Override
+ public void mousePressed(MouseEvent me)
+ {
+ throw new RuntimeException(EXCEPTION_MESSAGE);
+ }
+ };
+ f.addMouseListener(exceptionListener);
+
+ exceptionHandled = false;
+ Point fp = f.getLocationOnScreen();
+ r.mouseMove(fp.x + f.getWidth() / 2, fp.y + f.getHeight() / 2);
+ Util.waitForIdle(r);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ Util.waitForIdle(r);
+ r.mouseRelease(InputEvent.BUTTON2_MASK);
+ f.removeMouseListener(exceptionListener);
+
+ if (!exceptionHandled)
+ {
+ throw new RuntimeException("Test FAILED: exception is not handled for frame");
+ }
+
+ // check exception with modal dialog
+ final Dialog d = new Dialog(f, "D", true);
+ d.setBounds(fp.x + 100, fp.y + 100, 400, 300);
+ d.addMouseListener(exceptionListener);
+ EventQueue.invokeLater(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ d.setVisible(true);
+ }
+ });
+ Util.waitForIdle(r);
+
+ exceptionHandled = false;
+ Point dp = d.getLocationOnScreen();
+ r.mouseMove(dp.x + d.getWidth() / 2, dp.y + d.getHeight() / 2);
+ Util.waitForIdle(r);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ Util.waitForIdle(r);
+ r.mouseRelease(InputEvent.BUTTON2_MASK);
+ d.removeMouseListener(exceptionListener);
+
+ if (!exceptionHandled)
+ {
+ throw new RuntimeException("Test FAILED: exception is not handled for modal dialog");
+ }
+
+ // check the dialog is still modal
+ MouseListener pressedListener = new MouseAdapter()
+ {
+ @Override
+ public void mousePressed(MouseEvent me)
+ {
+ mousePressed = true;
+ }
+ };
+ f.addMouseListener(pressedListener);
+
+ mousePressed = false;
+ r.mouseMove(fp.x + 50, fp.y + 50);
+ Util.waitForIdle(r);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ Util.waitForIdle(r);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ Util.waitForIdle(r);
+ f.removeMouseListener(pressedListener);
+
+ if (mousePressed)
+ {
+ throw new RuntimeException("Test FAILED: modal dialog is not modal or visible after exception");
+ }
+
+ // test is passed
+ d.dispose();
+ f.dispose();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Frame/FrameSize/TestFrameSize.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2009 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
+ @bug 6721088
+ @summary X11 Window sizes should be what we set them to
+ @author Omair Majid <omajid@redhat.com>: area=awt.toplevel
+ @run main TestFrameSize
+ */
+
+/**
+ * TestFrameSize.java
+ *
+ * Summary: test that X11 Awt windows are drawn with correct sizes
+ *
+ * Test fails if size of window is wrong
+ */
+
+import java.awt.Dimension;
+import java.awt.Frame;
+
+public class TestFrameSize {
+
+ static Dimension desiredDimensions = new Dimension(200, 200);
+ static int ERROR_MARGIN = 15;
+ static Frame mainWindow;
+
+ public static void drawGui() {
+ mainWindow = new Frame("");
+ mainWindow.setPreferredSize(desiredDimensions);
+ mainWindow.pack();
+
+ Dimension actualDimensions = mainWindow.getSize();
+ System.out.println("Desired dimensions: " + desiredDimensions.toString());
+ System.out.println("Actual dimensions: " + actualDimensions.toString());
+ if (Math.abs(actualDimensions.height - desiredDimensions.height) > ERROR_MARGIN) {
+ throw new RuntimeException("Incorrect widow size");
+ }
+ }
+
+ public static void main(String[] args) {
+ try {
+ drawGui();
+ } finally {
+ if (mainWindow != null) {
+ mainWindow.dispose();
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mixing/HWDisappear.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,426 @@
+/*
+ * 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.
+ *
+ * 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 %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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mixing/JButtonInGlassPane.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,430 @@
+/*
+ * 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.
+ *
+ * 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 %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
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mixing/LWComboBox.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,425 @@
+/*
+ * 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.
+ *
+ * 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 %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
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,429 @@
+/*
+ * 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.
+ *
+ * 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 %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
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,434 @@
+/*
+ * 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.
+ *
+ * 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 %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
+
+
--- a/jdk/test/java/awt/Mixing/OpaqueTest.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/test/java/awt/Mixing/OpaqueTest.java Thu Feb 26 14:25:55 2009 -0800
@@ -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);
--- a/jdk/test/java/awt/Mixing/OverlappingButtons.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/test/java/awt/Mixing/OverlappingButtons.java Thu Feb 26 14:25:55 2009 -0800
@@ -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/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.html Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,42 @@
+/*
+ * 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 6176814
+ @summary Metalworks frame maximizes after the move
+ @author Andrei.Dmitriev.Com area=Event
+ @run applet MaximizedFrameTest.html
+ -->
+<head>
+<title> </title>
+</head>
+<body>
+
+<h1>bug 6176814<br>Bug ID: 6176814 </h1>
+
+<p> This is an AUTOMATIC test, simply wait for completion </p>
+
+<APPLET CODE="MaximizedFrameTest.class" WIDTH=200 HEIGHT=200></APPLET>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,112 @@
+/*
+ * 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 6176814
+ @summary Metalworks frame maximizes after the move
+ @author Andrei.Dmitriev area=Event
+ @run applet MaximizedFrameTest.html
+*/
+
+import java.applet.Applet;
+import javax.swing.*;
+import java.awt.event.*;
+import java.awt.*;
+
+public class MaximizedFrameTest extends Applet
+{
+ final int ITERATIONS_COUNT = 20;
+ Robot robot;
+ Point framePosition;
+ Point newFrameLocation;
+ JFrame frame;
+ Rectangle gcBounds;
+ public static Object LOCK = new Object();
+
+ public void init()
+ {
+ String[] instructions =
+ {
+ "This is an AUTOMATIC test",
+ "simply wait until it is done"
+ };
+ JFrame.setDefaultLookAndFeelDecorated(true);
+ frame = new JFrame("JFrame Maximization Test");
+ frame.pack();
+ frame.setSize(450, 260);
+ }//End init()
+
+ public void start ()
+ {
+ frame.setVisible(true);
+ validate();
+ JLayeredPane lPane = frame.getLayeredPane();
+ // System.out.println("JFrame's LayeredPane " + lPane );
+ Component titleComponent = null;
+ boolean titleFound = false;
+ for (int j=0; j < lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue()).length; j++){
+ titleComponent = lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue())[j];
+ if (titleComponent.getClass().getName().equals("javax.swing.plaf.metal.MetalTitlePane")){
+ titleFound = true;
+ break;
+ }
+ }
+ if ( !titleFound ){
+ throw new RuntimeException("Test Failed. Unable to determine title's size.");
+ }
+ //--------------------------------
+ // it is sufficient to get maximized Frame only once.
+ Point tempMousePosition;
+ framePosition = frame.getLocationOnScreen();
+ try {
+ robot = new Robot();
+ tempMousePosition = new Point(framePosition.x +
+ frame.getWidth()/2,
+ framePosition.y +
+ titleComponent.getHeight()/2);
+ robot.mouseMove(tempMousePosition.x, tempMousePosition.y);
+ for (int iteration=0; iteration < ITERATIONS_COUNT; iteration++){
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ gcBounds =
+ GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getConfigurations()[0].getBounds();
+ //Moving a mouse pointer less than a few pixels
+ //leads to rising a double click event.
+ //We have to use exceeded the AWT_MULTICLICK_SMUDGE
+ //const value (which is 4 by default on GNOME) to test that.
+ tempMousePosition.x += 5;
+ robot.mouseMove(tempMousePosition.x, tempMousePosition.y);
+ robot.delay(70);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ if ( frame.getExtendedState() != 0 ){
+ throw new RuntimeException ("Test failed. JFrame was maximized. ExtendedState is : "+frame.getExtendedState());
+ }
+ robot.delay(500);
+ } //for iteration
+
+ }catch(AWTException e) {
+ throw new RuntimeException("Test Failed. AWTException thrown.");
+ }
+ System.out.println("Test passed.");
+ }// start()
+}// class
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,131 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that drag events are coming for every button if the property is set to true
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main ExtraButtonDrag
+ */
+
+//events from standard should also come
+
+import java.awt.*;
+import java.awt.event.*;
+
+public class ExtraButtonDrag extends Frame {
+ static String tk = Toolkit.getDefaultToolkit().getClass().getName();
+ static Robot robot;
+ static int [] buttonsPressed;
+ static int [] buttonsReleased;
+ static int [] buttonsClicked;
+ volatile static boolean dragged = false;
+ volatile static boolean moved = false;
+
+ public ExtraButtonDrag(){
+ super("ExtraButtonDrag");
+ }
+
+ public static void main(String []s){
+ Frame frame = new ExtraButtonDrag();
+
+ MouseAdapter ma = new MouseAdapter() {
+ public void mouseDragged(MouseEvent e) {
+ System.out.println("Dragged "+e);// +" : "+ e.getButton() + " : " +e.getButtonState(e.getButton()));
+ dragged = true;
+ }
+ public void mouseMoved(MouseEvent e) {
+ System.out.println("Moved "+e);
+ moved = true;
+ }
+ public void mousePressed(MouseEvent e) {
+ System.out.println(">>> "+e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ System.out.println(">>> "+e);
+ }
+
+ };
+
+ frame.addMouseMotionListener(ma);
+ frame.addMouseListener(ma);
+
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+
+ int [] buttonMask = new int [MouseInfo.getNumberOfButtons()]; //InputEvent.getButtonMasks();
+
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonMask[i] = InputEvent.getMaskForButton(i+1);
+ // System.out.println("TEST: "+tmp[i]);
+ }
+
+ try {
+ robot = new Robot();
+ robot.delay(1000);
+ Point centerFrame = new Point(frame.getLocationOnScreen().x + frame.getWidth()/2, frame.getLocationOnScreen().y + frame.getHeight()/2);
+ Point outboundsFrame = new Point(frame.getLocationOnScreen().x + frame.getWidth()*3/2, frame.getLocationOnScreen().y + frame.getHeight()/2);
+
+ System.out.println("areExtraMouseButtonsEnabled() == " + Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled() );
+
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ System.out.println("button to drag = " +(i+1) + " : value passed to robot = " +buttonMask[i]);
+
+ try {
+ dragMouse(buttonMask[i], centerFrame.x, centerFrame.y, outboundsFrame.x, outboundsFrame.y);
+ } catch (IllegalArgumentException e){
+ throw new RuntimeException("Test failed. Exception occured.", e);
+ }
+
+ robot.delay(500);
+ //this is a choice-case for X protocol issue: native events from extra buttons doesn't contain
+ // the correct state so it's unable to decide if there is a drag or move. By default we send MOVED event.
+ //XToolkit: extra buttons should report MOVED events only
+ //WToolkit: extra buttons should report DRAGGED events only
+ if (i > 2){ //extra buttons only
+ if (tk.equals("sun.awt.X11.XToolkit") || tk.equals("sun.awt.motif.MToolkit")) {
+ if (!moved || dragged) {
+ throw new RuntimeException("Test failed."+ tk +" Button = " +(i+1) + " moved = "+moved +" : dragged = " +dragged);
+ }
+ } else { //WToolkit
+ if (moved || !dragged) {
+ throw new RuntimeException("Test failed."+ tk +" Button = " +(i+1) + " moved = "+moved +" : dragged = " +dragged);
+ }
+ }
+ } else {
+ if (moved || !dragged){
+ throw new RuntimeException("Test failed. Button = " +(i+1) + " not dragged.");
+ }
+ }
+ }
+ } catch (Exception e){
+ throw new RuntimeException("", e);
+ }
+ }
+
+ public static void dragMouse(int button, int x0, int y0, int x1, int y1){
+ int curX = x0;
+ int curY = y0;
+ int dx = x0 < x1 ? 1 : -1;
+ int dy = y0 < y1 ? 1 : -1;
+ robot.mouseMove(x0, y0);
+
+ robot.delay(200);
+ dragged = false;
+ moved = false;
+
+ robot.mousePress(button);
+
+ while (curX != x1){
+ curX += dx;
+ robot.mouseMove(curX, curY);
+ robot.delay(5);
+ }
+ while (curY != y1 ){
+ curY += dy;
+ robot.mouseMove(curX, curY);
+ robot.delay(5);
+ }
+ robot.mouseRelease(button);
+ }
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ModifierPermutation.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,320 @@
+/*
+ test %I% %E%
+ @bug 6315717
+ @summary presses buttons in all permutations and verifies modifiers
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main ModifierPermutation
+ */
+//package modifierpermutation;
+
+/*
+The test will try to press-release every button present on the mouse in different order.
+Here are some abbreviations:
+ BUTTON1 press = P1
+ BUTTON2 press = P2 etc.
+ BUTTON1 release = R1
+ BUTTON2 release = R2 etc.
+Only sequences alike below are possible : <P1, P2, R2, R1>.
+Sequences like <P1, P2, R1, R2> will not be covered by this test due to its probable complexity.
+ */
+
+import java.awt.*;
+import sun.awt.SunToolkit;
+import java.awt.event.*;
+import java.util.Arrays;
+
+public class ModifierPermutation {
+ static boolean failed = false;
+ final static int BUTTONSNUMBER = MouseInfo.getNumberOfButtons();
+
+/*
+ * Because of some problems with BUTTONx_MASK
+ * (they are not ordered. Instead, their values are: 16 8 4)
+ * We have to use array [1..n] and make every permutation on its
+ * containment. After each permutation, make the same thing with
+ * array of buttons and array of expected modifiers.
+ */
+ static SunToolkit st = (SunToolkit)(Toolkit.getDefaultToolkit());
+ //all button masks
+ static int [] mouseButtons = new int [BUTTONSNUMBER]; //BUTTONx_MASK
+ static int [] mouseButtonsDown = new int [BUTTONSNUMBER]; //BUTTONx_DOWN_MASK
+
+ //used to store mouse buttons sequences to press/to release
+ static int [] affectedButtonsToPressRelease;
+// static int [] buttonsToRelease;
+// static int [] modifiersToVerifyOnPressRelease;
+
+ static Robot robot;
+ static CheckingAdapter adapterTest1;
+ static Frame f;
+
+ static {
+ for (int i = 0; i < BUTTONSNUMBER; i++){
+ mouseButtons[i] = InputEvent.getMaskForButton(i+1); //then change first three elements here to BUTTONx_MASK
+ mouseButtonsDown[i] = InputEvent.getMaskForButton(i+1);
+ }
+ //mouseButtons initially has following values : 16 8 4.
+/* mouseButtons[0] = InputEvent.BUTTON1_MASK;
+ mouseButtons[1] = InputEvent.BUTTON2_MASK;
+ mouseButtons[2] = InputEvent.BUTTON3_MASK;
+ */
+ }
+
+ public static void main(String s[]){
+ init();
+
+ try {
+ robot = new Robot();
+ } catch (Exception e){
+ e.printStackTrace();
+ throw new RuntimeException("Test failed.", e);
+ }
+ robot.delay(500);
+ robot.mouseMove(f.getLocationOnScreen().x + f.getWidth()/2, f.getLocationOnScreen().y + f.getHeight()/2);
+ robot.delay(500);
+ //Top limit is the factorial of the number of existing buttons
+ for (int k = 0; k < factorial(mouseButtons.length)-1; k++){
+ //now we will press 2 up to maximum buttons and release them in different order and listen for
+ // PRESSED events and check it's ExModifiers
+ for (int buttonsToPressNumber = 2; buttonsToPressNumber <= BUTTONSNUMBER; buttonsToPressNumber++ ){
+ System.out.println(">>>");
+
+ //Now get the slice of affected buttons
+ affectedButtonsToPressRelease = Arrays.copyOf(mouseButtons, buttonsToPressNumber);
+// modifiersToVerifyOnPressRelease = Arrays.copyOf(mouseButtons, buttonsToPressNumber);
+
+ //Now press all these buttons in the order as they are in array affectedButtonsToPressRelease
+ //And release all these buttons in back order.
+
+ dumpArray("Affected Buttons ", affectedButtonsToPressRelease);
+ pressAllButtons(affectedButtonsToPressRelease);
+ releaseAllButtonsForwardOrder(affectedButtonsToPressRelease);
+// nextPermutation(i, buttonsToRelease);
+ //TODO: press buttons and release them backward
+ //All I have to add is :
+// pressAllButtons(affectedButtonsToPressRelease);
+// releaseAllButtonsBackwardOrder(affectedButtonsToPressRelease);
+
+ System.out.println("<<<");
+ }
+ nextPermutation(k, mouseButtons);
+// PermutationGenerator.nextPermutation(k, mouseButtonsDown);
+ dumpArray("mouseButtons (step="+k+")", mouseButtons);
+// dumpArray("mouseButtonsDown (step="+k+")", mouseButtonsDown);
+ }
+ }
+
+ private static void init(){
+ adapterTest1 = new CheckingAdapter();
+ f = new Frame("Robot presses mouse here");
+ f.setSize(300, 300);
+ f.setVisible(true);
+ f.addMouseListener(adapterTest1);
+ }
+ public static int factorial(int t){
+ if (t <=1 ) {
+ return 1;
+ } else {
+ return t*factorial(t-1);
+ }
+ }
+
+ // use this variable to get current button on EDT in checkModifiers()
+ static volatile int currentButtonIndexUnderAction;
+
+ public static void pressAllButtons(int []array){
+ for (int i = 0; i <array.length; i ++){
+ if (failed) {
+ throw new RuntimeException("PRESSED_EVENT is not filled with correct values. Review messaage above.");
+ }
+ System.out.println("Pressing button = " + array[i]);
+ currentButtonIndexUnderAction = i;
+ robot.mousePress(array[i]);
+ System.out.println("currentButtonIndexUnderAction ="+currentButtonIndexUnderAction);
+ st.realSync();
+ // robot.delay(100);
+ }
+ }
+
+ public static void releaseAllButtonsForwardOrder(int []array){
+ for (int i = 0; i <array.length; i ++){
+ System.out.println("Releasing button = " + array[i]);
+ currentButtonIndexUnderAction = i;
+ robot.mouseRelease(array[i]);
+ System.out.println("currentButtonIndexUnderAction ="+currentButtonIndexUnderAction);
+ st.realSync();
+ // robot.delay(100);
+ }
+ }
+
+ public static void checkModifiersOnPress(MouseEvent e){
+ System.out.println("checkModifiers. currentButtonIndexUnderAction ="+currentButtonIndexUnderAction);
+ for (int i = 0; i<= currentButtonIndexUnderAction; i++){
+ if ((e.getModifiersEx() & affectedButtonsToPressRelease[i]) == 0){
+ System.out.println("ERROR["+i+"]: PRESSED_EVENT is not filled with correct values. affectedButtonsToPressRelease[i]= "+affectedButtonsToPressRelease[i] +" Event = "+e);
+ ModifierPermutation.failed = true;
+ } else {
+ System.out.println("CORRECT["+i+"]: affectedButtonsToPressRelease[i]= "+affectedButtonsToPressRelease[i]+ " Event = "+e);
+ }
+ }
+ }
+
+ /*======================================================================*/
+ public static void dumpValues(int button, int modifiers, int modifiersStandard, int modifiersEx, int modifiersExStandard){
+ System.out.println("Button = "+button + "Modifiers = "+ modifiers + " standard = "+ modifiersStandard);
+ System.out.println(" ModifiersEx = "+ modifiersEx + " standardEx = "+ modifiersExStandard);
+ }
+
+ public static void dumpArray(String id, int [] array){
+ System.out.print(id);
+ for (int i = 0; i < array.length; i++){
+ System.out.print(array[i]+" ");
+ }
+ System.out.println();
+ }
+ public static void nextPermutation(int step, int []array){
+ int i;
+ int leftEl = 0;
+ int rightEl = 0;
+
+ i = array.length - 2;
+ while (i>=0) {
+ if (array[i] < array[i+1]){
+ leftEl = i;
+ // System.out.println("leftEl = "+leftEl);
+ break;
+ }
+ i--;
+ }
+
+ i = array.length - 1;
+ while (i>=0) {
+ if (array[i] > array[leftEl]) {
+ rightEl = i;
+ // System.out.println("rightEl = "+rightEl);
+ break;
+ }
+ i--;
+ }
+ swapElements(array, leftEl, rightEl);
+ if (leftEl + 2 < array.length){
+ // System.out.println("sort");
+ Arrays.sort(array, leftEl + 1 , array.length);
+ }
+ }
+
+ public static void swapElements(int [] array, int leftEl, int rightEl){
+ int tmp = array[leftEl];
+ array[leftEl] = array[rightEl];
+ array[rightEl] = tmp;
+ }
+
+ public static void checkModifiersOnRelease(MouseEvent e){
+ System.out.println("CheckModifiersOnRelease. currentButtonIndexUnderAction ="+currentButtonIndexUnderAction);
+ for (int i = currentButtonIndexUnderAction+1; i<affectedButtonsToPressRelease.length; i++){
+ if ((e.getModifiersEx() & affectedButtonsToPressRelease[i]) == 0){
+ System.out.println("ERROR["+i+"]: RELEASED_EVENT is not filled with correct values. affectedButtonsToPressRelease[i]= "+affectedButtonsToPressRelease[i] +" Event = "+e);
+ ModifierPermutation.failed = true;
+ } else {
+ System.out.println("CORRECT["+i+"]: affectedButtonsToPressRelease[i]= "+affectedButtonsToPressRelease[i]+ " Event = "+e);
+ }
+ }
+ }
+
+ public static void checkModifiersOnClick(MouseEvent e){
+ System.out.println("CheckModifiersOnClick. currentButtonIndexUnderAction ="+currentButtonIndexUnderAction);
+//Actually the same as in checkModifiersOnRelease()
+ for (int i = currentButtonIndexUnderAction+1; i<affectedButtonsToPressRelease.length; i++){
+ if ((e.getModifiersEx() & affectedButtonsToPressRelease[i]) == 0){
+ System.out.println("ERROR["+i+"]: CLICK_EVENT is not filled with correct values. affectedButtonsToPressRelease[i]= "+affectedButtonsToPressRelease[i] +" Event = "+e);
+ ModifierPermutation.failed = true;
+ } else {
+ System.out.println("CORRECT["+i+"]: affectedButtonsToPressRelease[i]= "+affectedButtonsToPressRelease[i]+ " Event = "+e);
+ }
+ }
+ }
+}
+///~ ModifierPermutation clas
+
+/* A class that invoke appropriate verification
+ * routine with current modifier.
+ */
+class CheckingAdapter extends MouseAdapter{
+ public CheckingAdapter(){}
+
+ public void mousePressed(MouseEvent e) {
+ System.out.println("PRESSED "+e);
+ ModifierPermutation.checkModifiersOnPress(e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ System.out.println("RELEASED "+e);
+ ModifierPermutation.checkModifiersOnRelease(e);
+
+ }
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("CLICKED "+e);
+ ModifierPermutation.checkModifiersOnClick(e);
+ }
+}
+
+// A class that could make a standard permutation with no regard to the
+// values of array passed in.
+// It uses a buttonIndicesToPermutate array with [1..N] values to perform
+// these permutations.
+//Note that nextPermutation is a static method and you can't keep track
+// of more the single permutation sequence.
+/*
+class PermutationGenerator{
+ final static int BUTTONSNUMBER = MouseInfo.getNumberOfButtons();
+ static int [] buttonIndicesToPermutate = new int [BUTTONSNUMBER];;
+ public PermutationGenerator(){
+ for (int i = 0; i < BUTTONSNUMBER; i++){
+ buttonIndicesToPermutate[i] = i+1; //fill it with [1..N] values
+ }
+ }
+
+ public static void nextPermutation(int step, int []array){
+ if (array.length != buttonIndicesToPermutate.length) {
+ throw new IllegalArgumentException("Array should have length equals to mouse buttons number.");
+ }
+ int i;
+ int leftEl = 0;
+ int rightEl = 0;
+
+ i = array.length - 2;
+ while (i>=0) {
+ if (buttonIndicesToPermutate[i] < buttonIndicesToPermutate[i+1]){
+ leftEl = i;
+ // System.out.println("leftEl = "+leftEl);
+ break;
+ }
+ i--;
+ }
+
+ i = array.length - 1;
+ while (i>=0) {
+ if (buttonIndicesToPermutate[i] >buttonIndicesToPermutate[leftEl]) {
+ rightEl = i;
+ // System.out.println("rightEl = "+rightEl);
+ break;
+ }
+ i--;
+ }
+ swapElements(array, leftEl, rightEl);
+ swapElements(buttonIndicesToPermutate, leftEl, rightEl);
+
+ if (leftEl + 2 < array.length){
+ // System.out.println("sort");
+//need to make our own sorting because arraysort makes this on actual values in array...
+ Arrays.sort(array, leftEl + 1 , array.length);
+ Arrays.sort(buttonIndicesToPermutate, leftEl + 1 , buttonIndicesToPermutate.length);
+// sortArray(array, leftEl + 1 , array.length);
+ }
+ }
+ public static void swapElements(int [] array, int leftEl, int rightEl){
+ int tmp = array[leftEl];
+ array[leftEl] = array[rightEl];
+ array[rightEl] = tmp;
+ }
+}
+*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Extra.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,490 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that modifiers are correct for extra buttons
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main MouseModifiersUnitTest_Extra
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+// will process extra buttons only
+// asking parameters from CMD: manual/automatic, modifier to test
+
+public class MouseModifiersUnitTest_Extra extends Frame {
+ static final int NONE = 0;
+ static final int SHIFT = 1;
+ static final int CTRL = 2;
+ static final int ALT = 3;
+ static CheckingModifierAdapter adapterTest1;
+ static CheckingModifierAdapter adapterTest2;
+ static CheckingModifierAdapter adapterTest3;
+ static CheckingModifierAdapter adapterTest4;
+
+ static boolean debug = true; //dump all errors (debug) or throw first(under jtreg) exception
+ static boolean autorun = false; //use robot or manual run
+ static int testModifier = NONE;
+
+ static int [] mouseButtons;
+ static int [] mouseButtonDownMasks;
+
+ //an arrays representing a modifiersEx of extra mouse buttons while using ALT/CTRL/SHIFT or none of them
+ static int [] modifiersExStandard;
+ static int [] modifiersExStandardSHIFT;
+ static int [] modifiersExStandardCTRL;
+ static int [] modifiersExStandardALT;
+
+ // final static int [] mouseButtons = new int [] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON3_MASK};
+ // BUTTON1, 2, 3 press-release.
+ final static int modifiersStandard = 0; //InputEvent.BUTTON_DOWN_MASK;
+
+ public static void checkPressedModifiersTest(int testModifier, MouseEvent event){
+ int [] curStandardExModifiers = getStandardExArray(testModifier);
+ int button = event.getButton();
+ int modifiers = event.getModifiers();
+ int modifiersEx = event.getModifiersEx();
+ int index = (button - 4)*3;
+ dumpValues(button, modifiers, modifiersStandard, modifiersEx, curStandardExModifiers[index]);
+ if (modifiers != modifiersStandard){
+ MessageLogger.reportError("Test failed : Pressed. modifiers != modifiersStandard");
+ }
+
+ if (modifiersEx != curStandardExModifiers[index]){
+// System.out.println(">>>>>>>>>>>>>>> Pressed. modifiersEx "+modifiersEx +" : "+!= curStandardExModifiers");
+ MessageLogger.reportError("Test failed : Pressed. modifiersEx != curStandardExModifiers");
+ }
+
+ //check event.paramString() output
+ HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
+ System.out.println(event.paramString());
+ checkButton(paramStringElements, button);
+ checkModifiers(testModifier, paramStringElements, button);
+ checkExtModifiersOnPress(testModifier, paramStringElements, button);
+ }
+
+ public static void checkExtModifiersOnReleaseClick(int testModifier, HashMap h, int button){
+ String ethalon = "";
+ switch (testModifier){
+ case SHIFT:{
+ ethalon = "Shift";
+ break;
+ }
+ case ALT:{
+ ethalon = "Alt";
+ break;
+ }
+ case CTRL:{
+ ethalon = "Ctrl";
+ break;
+ }
+ }
+ //
+ if (h.get("extModifiers") == null){
+ h.put("extModifiers", "");
+ }
+ if (!ethalon.equals(h.get("extModifiers"))) {
+ MessageLogger.reportError("Test failed : Released/Clicked. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
+ }
+ }
+
+ public static void checkExtModifiersOnPress(int testModifier, HashMap h, int button){
+ String ethalon = "";
+ switch (testModifier){
+ case SHIFT:{
+ ethalon = "Shift+";
+ break;
+ }
+ case ALT:{
+ ethalon = "Alt+";
+ break;
+ }
+ case CTRL:{
+ ethalon = "Ctrl+";
+ break;
+ }
+ }
+ ethalon = ethalon + "Button" +button;
+
+ if (!h.get("extModifiers").equals(ethalon)) {
+ MessageLogger.reportError("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
+ }
+ }
+
+ public static void checkModifiers(int testModifier, HashMap<String, String> h, int button){
+ // none of modifiers for extra button should be null
+ if (h.get("modifiers") != null) {
+ MessageLogger.reportError("Test failed : modifiers != null");
+ }
+ }
+
+ public static void checkButton(HashMap<String, String> h, int button){
+ if (h.get("button") == null) {
+ MessageLogger.reportError("Test failed : checkButton(). button is absent in paramString()");
+ }
+ if (Integer.parseInt(h.get("button")) != button) {
+ MessageLogger.reportError("Test failed : checkButton. button in paramString() doesn't equal to button being pressed.");
+ }
+ }
+ public static HashMap<String, String> tokenizeParamString(String param){
+ HashMap <String, String> params = new HashMap<String, String>();
+ StringTokenizer st = new StringTokenizer(param, ",=");
+ while (st.hasMoreTokens()){
+ String tmp = st.nextToken();
+// System.out.println("PARSER : "+tmp);
+ if (tmp.equals("button") ||
+ tmp.equals("modifiers") ||
+ tmp.equals("extModifiers")) {
+ params.put(tmp, st.nextToken());
+ }
+ }
+ return params;
+ }
+
+ public static Vector<String> tokenizeModifiers(String modifierList){
+ Vector<String> modifiers = new Vector<String>();
+ StringTokenizer st = new StringTokenizer(modifierList, "+");
+ while (st.hasMoreTokens()){
+ String tmp = st.nextToken();
+ modifiers.addElement(tmp);
+ System.out.println("MODIFIER PARSER : "+tmp);
+ }
+ return modifiers;
+ }
+
+ public static void checkReleasedModifiersTest(int testModifier, MouseEvent event){
+ int [] curStandardExModifiers = getStandardExArray(testModifier);
+ int button = event.getButton();
+ int modifiers = event.getModifiers();
+ int modifiersEx = event.getModifiersEx();
+ int index = (button - 4)*3 + 1;
+ dumpValues(button, modifiers, modifiersStandard, modifiersEx, curStandardExModifiers[index]);
+ if (modifiers != modifiersStandard){
+ MessageLogger.reportError("Test failed : Released. modifiers != modifiersStandard");
+ }
+
+ if (modifiersEx != curStandardExModifiers[index]){
+ MessageLogger.reportError("Test failed : Released. modifiersEx != curStandardExModifiers");
+ }
+
+ //check event.paramString() output
+ HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
+ checkButton(paramStringElements, button);
+ checkModifiers(testModifier, paramStringElements, button);
+ System.out.println("paramStringElements = "+paramStringElements);
+ checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
+ }
+
+ public static void checkClickedModifiersTest(int testModifier, MouseEvent event){
+ int [] curStandardExModifiers = getStandardExArray(testModifier);
+ int button = event.getButton();
+ int modifiers = event.getModifiers();
+ int modifiersEx = event.getModifiersEx();
+ int index = (button - 4)*3 + 2;
+ dumpValues(button, modifiers, modifiersStandard, modifiersEx, curStandardExModifiers[index]);
+ if (modifiers != modifiersStandard){
+ MessageLogger.reportError("Test failed : Clicked. modifiers != modifiersStandard");
+ }
+
+ if (modifiersEx != curStandardExModifiers[index]){
+ MessageLogger.reportError("Test failed : Clicked. modifiersEx != curStandardExModifiers");
+ }
+
+ //check event.paramString() output
+ HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
+ checkButton(paramStringElements, button);
+ checkModifiers(testModifier, paramStringElements, button);
+ checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
+ }
+
+ private static int[] getStandardExArray(int testModifier) {
+ int [] curStandardExModifiers;
+ switch (testModifier){
+ case SHIFT:
+ curStandardExModifiers = modifiersExStandardSHIFT;
+ break;
+ case CTRL:
+ curStandardExModifiers = modifiersExStandardCTRL;
+ break;
+ case ALT:
+ curStandardExModifiers = modifiersExStandardALT;
+ break;
+ default: //NONE by default
+ curStandardExModifiers = modifiersExStandard;
+ }
+ return curStandardExModifiers;
+ }
+
+ static Robot robot;
+ public void init() {
+ this.setLayout(new BorderLayout());
+
+ String[] instructions =
+ {
+ "This test should be used with the mouse having more then three buttons.",
+ "Currently, " + MouseInfo.getNumberOfButtons() +" buttons are available.",
+ "If there are less then three buttons, press PASS.",
+ "1. Press each extra mouse button.",
+ "2. For each mouse event its modifiers and ExModifiers will be printed.",
+ "3. Verify that they are correct.",
+ "4. Press Pass or Fail accordingly."
+ };
+// Sysout.createDialogWithInstructions( instructions );
+
+// addMouseListener(adapterTest1);
+ try {
+ robot = new Robot();
+ } catch (Exception e) {
+ MessageLogger.reportError("Test failed. "+e);
+ }
+ }//End init()
+
+ public void start() {
+ //Get things going. Request focus, set size, et cetera
+ setSize(200,200);
+ setVisible(true);
+ validate();
+ if (autorun) {
+ testNONE();
+ testSHIFT();
+ testCTRL();
+ testALT();
+ } else {
+ switch (testModifier){
+ case SHIFT:
+ this.addMouseListener(adapterTest2);
+ break;
+ case CTRL:
+ this.addMouseListener(adapterTest3);
+ break;
+ case ALT:
+ this.addMouseListener(adapterTest4);
+ break;
+ default: //NONE by default
+ this.addMouseListener(adapterTest1);
+ }
+ }
+ }// start()
+
+ //000000000000000000000000000000000000000000000000000000000000000
+ public void testNONE(){
+ this.addMouseListener(adapterTest1);
+ robot.delay(1000);
+ robot.mouseMove(getLocationOnScreen().x + getWidth()/2, getLocationOnScreen().y + getHeight()/2);
+ for (int i = 3; i< mouseButtons.length; i++){
+ System.out.println("testNONE() => " +mouseButtons[i] );
+ robot.mousePress(mouseButtons[i]);
+ robot.delay(100);
+ robot.mouseRelease(mouseButtons[i]);
+ }
+ robot.delay(1000);
+ this.removeMouseListener(adapterTest1);
+ }
+
+ public void testSHIFT(){
+ this.addMouseListener(adapterTest2);
+ robot.delay(1000);
+ robot.mouseMove(getLocationOnScreen().x + getWidth()/2, getLocationOnScreen().y + getHeight()/2);
+ for (int i = 3; i< mouseButtons.length; i++){
+ robot.keyPress(KeyEvent.VK_SHIFT);
+ System.out.println("testSHIFT() => " +mouseButtons[i] );
+ robot.mousePress(mouseButtons[i]);
+ robot.delay(100);
+ robot.mouseRelease(mouseButtons[i]);
+ robot.keyRelease(KeyEvent.VK_SHIFT);
+ }
+ robot.delay(1000);
+ this.removeMouseListener(adapterTest2);
+ }
+
+ public void testCTRL(){
+ this.addMouseListener(adapterTest3);
+ robot.delay(1000);
+ robot.mouseMove(getLocationOnScreen().x + getWidth()/2, getLocationOnScreen().y + getHeight()/2);
+ for (int i = 3; i< mouseButtons.length; i++){
+ robot.keyPress(KeyEvent.VK_CONTROL);
+ System.out.println("testCTRL() => " +mouseButtons[i] );
+ robot.mousePress(mouseButtons[i]);
+ robot.delay(100);
+ robot.mouseRelease(mouseButtons[i]);
+ robot.keyRelease(KeyEvent.VK_CONTROL);
+ }
+ robot.delay(1000);
+ this.removeMouseListener(adapterTest3);
+ }
+
+ public void testALT(){
+ this.addMouseListener(adapterTest4);
+ robot.delay(1000);
+ robot.mouseMove(getLocationOnScreen().x + getWidth()/2, getLocationOnScreen().y + getHeight()/2);
+ for (int i = 3; i< mouseButtons.length; i++){
+ robot.keyPress(KeyEvent.VK_ALT);
+ System.out.println("testALT() => " +mouseButtons[i] );
+ robot.mousePress(mouseButtons[i]);
+ robot.delay(100);
+ robot.mouseRelease(mouseButtons[i]);
+ robot.keyRelease(KeyEvent.VK_ALT);
+ }
+ robot.delay(1000);
+ this.removeMouseListener(adapterTest4);
+ }
+
+ //**************************************************************************************************
+ public static void dumpValues(int button, int modifiers, int modifiersStandard, int modifiersEx, int modifiersExStandard){
+ System.out.println("Button = "+button + "Modifiers = "+ modifiers + "standard = "+ modifiersStandard);
+ System.out.println("Button = "+button + "ModifiersEx = "+ modifiersEx + "standardEx = "+ modifiersExStandard);
+ }
+
+ public static void initParams(String []s){
+ if (s.length != 3){
+ autorun = true;
+ debug = false;
+ testModifier = NONE;
+ } else {
+ autorun = Boolean.valueOf(s[0]);
+ debug = Boolean.valueOf(s[1]);
+
+ if (s[2].equals("NONE")){
+ testModifier = NONE;
+ }
+ if (s[2].equals("SHIFT")){
+ testModifier = SHIFT;
+ }
+ if (s[2].equals("CTRL")){
+ testModifier = CTRL;
+ }
+ if (s[2].equals("ALT")){
+ testModifier = ALT;
+ }
+ }
+ MessageLogger.setDebug(debug);
+ System.out.println("Autorun : " +autorun);
+ System.out.println("Debug mode : " +debug);
+ System.out.println("Modifier to verify : " + testModifier);
+ }
+
+ public static void initAdapters(){
+ adapterTest1 = new CheckingModifierAdapter(NONE);
+ adapterTest2 = new CheckingModifierAdapter(SHIFT);
+ adapterTest3 = new CheckingModifierAdapter(CTRL);
+ adapterTest4 = new CheckingModifierAdapter(ALT);
+ }
+
+ public static void initVars(){
+ int [] tmp = new int [MouseInfo.getNumberOfButtons()];
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ tmp[i] = InputEvent.getMaskForButton(i+1);
+ // System.out.println("TEST: "+tmp[i]);
+ }
+
+ mouseButtons = Arrays.copyOf(tmp, tmp.length);
+
+ for (int i = 0; i < mouseButtons.length; i++){
+ System.out.println("MouseArray [i] == "+mouseButtons[i]);
+ }
+
+ mouseButtonDownMasks = Arrays.copyOf(tmp, tmp.length);
+
+ // So we need to get the number of extra buttons on the mouse: "MouseInfo.getNumberOfButtons() - 3"
+ // and multyply on 3 because each button will generate three events : PRESS, RELEASE and CLICK.
+ tmp = new int [(MouseInfo.getNumberOfButtons()-3)*3];
+ Arrays.fill(tmp, 0);
+
+ for (int i = 0, j = 3; i < tmp.length; i = i + 3, j++){
+ tmp[i] = mouseButtonDownMasks[j];
+ }
+ modifiersExStandard = Arrays.copyOf(tmp, tmp.length);
+
+ Arrays.fill(tmp, InputEvent.SHIFT_DOWN_MASK);
+ for (int i = 0, j = 3; i < MouseInfo.getNumberOfButtons(); i = i + 3, j++){
+ tmp[i] = tmp[j] | mouseButtonDownMasks[j];
+ }
+ modifiersExStandardSHIFT = Arrays.copyOf(tmp, tmp.length);
+
+ Arrays.fill(tmp, InputEvent.CTRL_DOWN_MASK);
+ for (int i = 0, j = 3; i < MouseInfo.getNumberOfButtons(); i = i + 3, j++){
+ tmp[i] = tmp[j] | mouseButtonDownMasks[j];
+ }
+ modifiersExStandardCTRL = Arrays.copyOf(tmp, tmp.length);
+
+ Arrays.fill(tmp, InputEvent.ALT_DOWN_MASK);
+ for (int i = 0, j = 3; i < MouseInfo.getNumberOfButtons(); i = i + 3, j++){
+ tmp[i] = tmp[j] | mouseButtonDownMasks[j];
+ }
+ modifiersExStandardALT = Arrays.copyOf(tmp, tmp.length);
+ }
+
+ public static void main(String []s){
+ if (MouseInfo.getNumberOfButtons() < 4){
+ System.out.println("There are less then 4 buttons on the mouse. The test may not be accomplished. Skipping.");
+ return;
+ }
+ initVars();
+ MouseModifiersUnitTest_Extra frame = new MouseModifiersUnitTest_Extra();
+ frame.initParams(s);
+ frame.init();
+ initAdapters();
+ frame.start();
+ }
+
+}// class
+
+/* A class that invoke appropriate verification
+ * routine with current modifier.
+ */
+class CheckingModifierAdapter extends MouseAdapter{
+ int modifier;
+ public CheckingModifierAdapter(int modifier){
+ this.modifier = modifier;
+ }
+
+ public void mousePressed(MouseEvent e) {
+ System.out.println("PRESSED "+e);
+ if (e.getButton() <= MouseEvent.BUTTON3) {
+ System.out.println("Standard button affected. Skip.");
+ } else {
+ MouseModifiersUnitTest_Extra.checkPressedModifiersTest(modifier, e);
+ }
+ }
+ public void mouseReleased(MouseEvent e) {
+ System.out.println("RELEASED "+e);
+ if (e.getButton() <= MouseEvent.BUTTON3) {
+ System.out.println("Standard button affected. Skip.");
+ } else {
+ MouseModifiersUnitTest_Extra.checkReleasedModifiersTest(modifier, e);
+ }
+ }
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("CLICKED "+e);
+ if (e.getButton() <= MouseEvent.BUTTON3) {
+ System.out.println("Standard button affected. Skip.");
+ } else {
+ MouseModifiersUnitTest_Extra.checkClickedModifiersTest(modifier, e);
+ }
+ }
+}
+//Utility class that could report a message depending on current purpose of the test run
+class MessageLogger{
+ private static boolean debug;
+
+ public static void setDebug(boolean d){
+ debug = d;
+ log("Switch to "+ ((debug)?"debug":"trial") +" mode");
+ }
+
+ public static void log(String message){
+ System.out.println(message);
+ }
+
+ public static void reportError(String message){
+ if (debug){
+ System.out.println(message);
+ } else {
+ throw new RuntimeException(message);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,598 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that modifiers are correct for standard (1, 2, 3, wheel) mouse buttons
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main MouseModifiersUnitTest_Standard
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import java.util.HashMap;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+//the test verifies:
+// 1) verifies that modifiers are correct for standard (1, 2, 3) mouse buttons
+// TODO: 2) verifies that modifiers are correct for wheel
+// TODO: 3)
+// Case1. the test posts BUTTONx_MASK and verifies that paramString() contains correct modifiers and exModifiers
+// Case2. the test posts BUTTONx_DOWN_MASK and verifies that paramString() contains correct modifiers and exModifiers
+// Case3. the test posts getMaskForButton(n) and verifies that paramString() contains correct modifiers and exModifiers
+// repeat all cases with SHIFT/ALT/CTRL modifiers verify that paramString() contains correct modifiers and exModifiers
+// I'm verifying button, modifiers and extModifiers for now.
+
+public class MouseModifiersUnitTest_Standard {
+ static final int NONE = 0;
+ static final int SHIFT = 1;
+ static final int CTRL = 2;
+ static final int ALT = 3;
+ static boolean debug = true; //dump all errors (debug) or throw first(under jtreg) exception
+ static boolean autorun = false; //use robot or manual run
+ static int testModifier = NONE;
+ // static String testModifier = "NONE";
+ static CheckingModifierAdapter adapterTest1;
+ static CheckingModifierAdapter adapterTest2;
+ static CheckingModifierAdapter adapterTest3;
+ static CheckingModifierAdapter adapterTest4;
+ static Frame f;
+ final static int [] mouseButtons = new int [] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON3_MASK};
+ // BUTTON1, 2, 3 press-release.
+ final static int [] modifiersStandardTestNONE = new int[] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK,
+ MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK,
+ MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK };
+ final static int [] modifiersExStandardTestNONE = new int[] {MouseEvent.BUTTON1_DOWN_MASK, 0, 0,
+ MouseEvent.BUTTON2_DOWN_MASK, 0, 0,
+ MouseEvent.BUTTON3_DOWN_MASK, 0, 0};
+ // BUTTON1, 2, 3 press-release with shift modifier
+ final static int [] modifiersStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK,
+ MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK,
+ MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK };
+ final static int [] modifiersExStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
+ MouseEvent.BUTTON2_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
+ MouseEvent.BUTTON3_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK};
+ // BUTTON1, 2, 3 press-release with CTRL modifier
+ final static int [] modifiersStandardTestCTRL = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK,
+ MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK,
+ MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK };
+ final static int [] modifiersExStandardTestCTRL = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
+ MouseEvent.BUTTON2_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
+ MouseEvent.BUTTON3_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK};
+
+ // BUTTON1, 2, 3 press-release with ALT modifier
+ final static int [] modifiersStandardTestALT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK,
+ MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK,
+ MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK };
+ final static int [] modifiersExStandardTestALT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
+ MouseEvent.BUTTON2_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
+ MouseEvent.BUTTON3_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK};
+
+ static Robot robot;
+
+ public static void main(String s[]){
+ initParams(s);
+ initAdapters();
+ f = new Frame();
+ final int [] modifiers = {InputEvent.SHIFT_MASK, InputEvent.CTRL_MASK};
+ final String [] modifierNames = {"InputEvent.SHIFT_MASK", "InputEvent.CTRL_MASK"};
+ f.setLayout(new FlowLayout());
+ f.addMouseWheelListener(new MouseWheelListener() {
+ public void mouseWheelMoved(MouseWheelEvent e) {
+ System.out.println("WHEEL "+e);
+ }
+ });
+ f.setSize(300, 300);
+ f.setVisible(true);
+
+ try {
+ robot = new Robot();
+ robot.delay(500);
+ robot.mouseMove(f.getLocationOnScreen().x + f.getWidth()/2, f.getLocationOnScreen().y + f.getHeight()/2);
+ if (autorun) {
+ //testing buttons 1, 2, 3 only
+ testPlainButtons();
+ robot.delay(500);
+
+ //testing buttons 1, 2, 3 with SHIFT, CTRL, ALT keyboard modifiers
+ testButtonsWithShift();
+ robot.delay(500);
+
+ testButtonsWithControl();
+ robot.delay(500);
+
+ testButtonsWithAlt();
+ robot.delay(500);
+ } else {
+ switch (testModifier){
+ case SHIFT:
+ f.addMouseListener(adapterTest2);
+ break;
+ case CTRL:
+ f.addMouseListener(adapterTest3);
+ break;
+ case ALT:
+ f.addMouseListener(adapterTest4);
+ break;
+ default: //NONE inclusive
+ f.addMouseListener(adapterTest1);
+ }
+ }
+ } catch (Exception e){
+ throw new RuntimeException("Test failed.");
+ }
+
+ }
+
+ public static void initAdapters(){
+ adapterTest1 = new CheckingModifierAdapter(NONE);
+ adapterTest2 = new CheckingModifierAdapter(SHIFT);
+ adapterTest3 = new CheckingModifierAdapter(CTRL);
+ adapterTest4 = new CheckingModifierAdapter(ALT);
+ }
+
+ /*======================================================================*/
+ public static void checkPressedModifiersTest(int testModifier, MouseEvent event){
+ int [] curStandardModifiers = getStandardArray(testModifier);
+ int [] curStandardExModifiers = getStandardExArray(testModifier);
+ int button = event.getButton();
+ int modifiers = event.getModifiers();
+ int modifiersEx = event.getModifiersEx();
+ int index = (button - 1)*3;
+ // int index = (button - 4)*3;
+ dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
+ if (modifiers != curStandardModifiers[index]){
+ if (debug){
+ System.out.println("Test failed : Pressed. modifiers != modifiersStandard");
+ } else {
+ throw new RuntimeException("Test failed : Pressed. modifiers != modifiersStandard");
+ }
+ }
+
+ if (modifiersEx != curStandardExModifiers[index]){
+// System.out.println(">>>>>>>>>>>>>>> Pressed. modifiersEx "+modifiersEx +" : "+!= curStandardExModifiers");
+ if (debug){
+ System.out.println("Test failed : Pressed. modifiersEx != curStandardExModifiers");
+ } else {
+ throw new RuntimeException("Test failed : Pressed. modifiersEx != curStandardExModifiers");
+ }
+ }
+ HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
+ System.out.println(event.paramString());
+ checkButton(paramStringElements, button);
+ checkModifiers(testModifier, paramStringElements, button);
+ checkExtModifiersOnPress(testModifier, paramStringElements, button);
+ }
+
+ public static void checkButton(HashMap<String, String> h, int button){
+ if (h.get("button") == null) {
+ throw new RuntimeException("Test failed : Clicked. button is absent in paramString()");
+ }
+ if (Integer.parseInt(h.get("button")) != button) {
+ throw new RuntimeException("Test failed : Clicked. button in paramString() doesn't equal to button being pressed.");
+ }
+ }
+
+ public static void checkExtModifiersOnPress(int testModifier, HashMap h, int button){
+ String ethalon = "";
+ if (h.get("extModifiers") == null) {
+ System.out.println("Test failed : Pressed. extModifiers == null");
+ throw new RuntimeException("Test failed : Pressed. extModifiers == null");
+ }
+ switch (testModifier){
+ case SHIFT:{
+ ethalon = "Shift+";
+ break;
+ }
+ case ALT:{
+ ethalon = "Alt+";
+ break;
+ }
+ case CTRL:{
+ ethalon = "Ctrl+";
+ break;
+ }
+ default: {
+ ethalon = "";
+ }
+ ethalon = ethalon + "Button" +button;
+
+ if (!h.get("extModifiers").equals(ethalon)) {
+ System.out.println("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
+ throw new RuntimeException("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
+ }
+ }
+ }
+
+
+
+ public static void checkModifiers(int testModifier, HashMap<String, String> h, int button){
+ // none of modifiers should be null
+ if (h.get("modifiers") == null) {
+ System.out.println("Test failed : modifiers == null");
+ throw new RuntimeException("Test failed : modifiers == null");
+ }
+ Vector <String> modifierElements = tokenizeModifiers(h.get("modifiers"));
+ //check that ButtonX is there
+ String buttonEthalon = "Button" + button;
+ if (modifierElements.contains(buttonEthalon)){
+ modifierElements.remove(buttonEthalon);
+ } else {
+ System.out.println("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
+ throw new RuntimeException("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
+ }
+
+
+ //Check all explicitly pressed modifires
+// boolean altIncluded = false; //don't duplicate Alt when ALT is pressed and BUTTON2_MASK.
+ String excplicitModifier = "";
+ boolean altIncluded = false;
+ switch (testModifier){
+ case SHIFT:{
+ excplicitModifier = "Shift";
+ break;
+ }
+ case ALT:{
+ excplicitModifier = "Alt";
+ altIncluded = true; //there should be only on "Alt" for two modifiers. So check it.
+ break;
+ }
+ case CTRL:{
+ excplicitModifier = "Ctrl";
+ break;
+ }
+ }
+ if (!excplicitModifier.equals("")){
+ if (modifierElements.contains(excplicitModifier)){
+ modifierElements.remove(excplicitModifier);
+ } else {
+ System.out.println("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
+ throw new RuntimeException("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
+ }
+ }
+
+ //Button 2 and 3 reports about Alt+Button2 and Meta+Button3 respectively.
+ //Check these values too
+ String extraModifiers = "";
+ String extraModifiersButton3 = "";
+ switch (button){
+ //BUTTON1 with ALT reports about Alt+Button1+Button2.
+ //We should fix this but I would not change this.
+ case 1: {
+ //Alt+Button1+Button2:
+ // 1) we already handled "Alt" in excplicitModifier
+ // 2) we already took "Button1" in buttonEthalon
+ // 3) so "Button2" is only remained.
+ // This should only happen when ALT+Button1 is pressed
+ if (altIncluded){
+ extraModifiers = "Button2";
+ }
+ break;
+ }
+ case 2: {
+ //Alt+Button2 report about "Alt+Button2".
+ extraModifiers = "Alt";
+ break;
+ }
+ case 3: {
+ //ALT+BUTTON3 reports about "Alt+Meta+Button2+Button3"
+ // This should only happen when ALT+Button3 is pressed
+ extraModifiers = "Meta";
+ if (altIncluded){
+ extraModifiersButton3 = "Button2";
+ }
+ break;
+ }
+ }//switch
+
+ if (!extraModifiers.equals("")){
+ if (modifierElements.contains(extraModifiers)){
+ modifierElements.remove(extraModifiers);
+ } else {
+ //we may already removed "Alt" when filtered explicit modifiers.
+ //Here is no failure in this case.
+ if (!altIncluded) {
+ System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
+ throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
+ }
+ }
+ }
+
+ if (!extraModifiersButton3.equals("")){
+ if (modifierElements.contains(extraModifiersButton3)){
+ modifierElements.remove(extraModifiersButton3);
+ } else {
+ System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
+ throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
+ }
+ }
+
+ //the length of vector should now be zero
+ if (!modifierElements.isEmpty()){
+ System.out.println("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
+ throw new RuntimeException("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
+ }
+ }
+
+ public static void checkExtModifiersOnReleaseClick(int testModifier, HashMap h, int button){
+ String ethalon = "";
+ switch (testModifier){
+ case SHIFT:{
+ ethalon = "Shift+";
+ break;
+ }
+ case ALT:{
+ ethalon = "Alt+";
+ break;
+ }
+ case CTRL:{
+ ethalon = "Ctrl+";
+ break;
+ }
+ default: {
+ if (h.get("extModifiers") != null) {
+ System.out.println("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
+ throw new RuntimeException("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
+ } else {
+ //no modifiers
+ return;
+ }
+ }
+ }
+ if (h.get("extModifiers").equals(ethalon)) {
+ System.out.println("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
+ throw new RuntimeException("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
+ }
+ }
+
+ public static void checkReleasedModifiersTest(int testModifier, MouseEvent event){
+ int [] curStandardModifiers = getStandardArray(testModifier);
+ int [] curStandardExModifiers = getStandardExArray(testModifier);
+ // int index = (button - 4)*3 + 1;
+ int button = event.getButton();
+ int modifiers = event.getModifiers();
+ int modifiersEx = event.getModifiersEx();
+ int index = (button - 1)*3 + 1;
+ dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
+ if (modifiers != curStandardModifiers[index]){
+ if (debug){
+ System.out.println("Test failed : Released. modifiers != modifiersStandard");
+ } else {
+ throw new RuntimeException("Test failed : Released. modifiers != modifiersStandard");
+ }
+ }
+ if (modifiersEx != curStandardExModifiers[index]){
+ if (debug){
+ System.out.println("Test failed : Released. modifiersEx != curStandardExModifiers");
+ } else {
+ throw new RuntimeException("Test failed : Released. modifiersEx != curStandardExModifiers");
+ }
+ }
+ HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
+ System.out.println(event.paramString());
+ checkButton(paramStringElements, button);
+ checkModifiers(testModifier, paramStringElements, button);
+ checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
+ }
+
+ public static void checkClickedModifiersTest(int testModifier, MouseEvent event){
+ int [] curStandardModifiers = getStandardArray(testModifier);
+ int [] curStandardExModifiers = getStandardExArray(testModifier);
+ // int index = (button - 4)*3 + 2;
+ int button = event.getButton();
+ int modifiers = event.getModifiers();
+ int modifiersEx = event.getModifiersEx();
+ int index = (button - 1)*3 + 2;
+ dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
+ if (modifiers != curStandardModifiers[index]){
+ if (debug){
+ System.out.println("Test failed : Clicked. modifiers != modifiersStandard");
+ } else {
+ throw new RuntimeException("Test failed : Clicked. modifiers != modifiersStandard");
+ }
+ }
+ if (modifiersEx != curStandardExModifiers[index]){
+ if (debug){
+ System.out.println("Test failed : Clicked. modifiersEx != curStandardExModifiers");
+ } else {
+ throw new RuntimeException("Test failed : Clicked. modifiersEx != curStandardExModifiers");
+ }
+ }
+ HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
+ checkButton(paramStringElements, button);
+ checkModifiers(testModifier, paramStringElements, button);
+ checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
+ }
+ /*======================================================================*/
+
+ public static HashMap<String, String> tokenizeParamString(String param){
+ HashMap <String, String> params = new HashMap<String, String>();
+ StringTokenizer st = new StringTokenizer(param, ",=");
+ while (st.hasMoreTokens()){
+ String tmp = st.nextToken();
+// System.out.println("PARSER : "+tmp);
+ if (tmp.equals("button") ||
+ tmp.equals("modifiers") ||
+ tmp.equals("extModifiers")) {
+ params.put(tmp, st.nextToken());
+ }
+ }
+ return params;
+ }
+
+ public static Vector<String> tokenizeModifiers(String modifierList){
+ Vector<String> modifiers = new Vector<String>();
+ StringTokenizer st = new StringTokenizer(modifierList, "+");
+ while (st.hasMoreTokens()){
+ String tmp = st.nextToken();
+ modifiers.addElement(tmp);
+ System.out.println("MODIFIER PARSER : "+tmp);
+ }
+ return modifiers;
+ }
+
+
+ //test BUTTON1, 2 and 3 without any modifiers keys
+ public static void testPlainButtons(){
+ System.out.println("Testing buttons without modifiers.");
+ f.addMouseListener(adapterTest1);
+ for (int button : mouseButtons){
+ robot.mousePress(button);
+ robot.delay(100);
+ robot.mouseRelease(button);
+ }
+ robot.delay(1000);
+ f.removeMouseListener(adapterTest1);
+ }
+
+ //test BUTTON1, 2 and 3 with SHIFT key
+ public static void testButtonsWithShift(){
+ System.out.println("Testing buttons with SHIFT modifier.");
+ f.addMouseListener(adapterTest2);
+
+ for (int button : mouseButtons){
+ robot.keyPress(KeyEvent.VK_SHIFT);
+ robot.mousePress(button);
+ robot.delay(100);
+ robot.mouseRelease(button);
+ robot.keyRelease(KeyEvent.VK_SHIFT);
+ }
+ robot.delay(1000);
+ f.removeMouseListener(adapterTest2);
+ }
+
+ //test BUTTON1, 2 and 3 with CTRL key
+ public static void testButtonsWithControl(){
+ System.out.println("Testing buttons with CONTROL modifier.");
+ f.addMouseListener(adapterTest3);
+ for (int button : mouseButtons){
+ robot.keyPress(KeyEvent.VK_CONTROL);
+ robot.mousePress(button);
+ robot.delay(100);
+ robot.mouseRelease(button);
+ robot.keyRelease(KeyEvent.VK_CONTROL);
+ }
+ robot.delay(1000);
+ f.removeMouseListener(adapterTest3);
+ }
+
+ //test BUTTON1, 2 and 3 with ALT key
+ public static void testButtonsWithAlt(){
+ System.out.println("Testing buttons with ALT modifier.");
+ f.addMouseListener(adapterTest4);
+ for (int button : mouseButtons){
+ robot.keyPress(KeyEvent.VK_ALT);
+ robot.mousePress(button);
+ robot.delay(100);
+ robot.mouseRelease(button);
+ robot.keyRelease(KeyEvent.VK_ALT);
+ }
+ robot.delay(1000);
+ f.removeMouseListener(adapterTest4);
+ }
+
+ public static void initParams(String []s){
+ if (s.length != 3){
+ autorun = true;
+ debug = false;
+ testModifier = NONE;
+ } else {
+ autorun = Boolean.valueOf(s[0]);
+ debug = Boolean.valueOf(s[1]);
+
+ if (s[2].equals("NONE")){
+ testModifier = NONE;
+ }
+ if (s[2].equals("SHIFT")){
+ testModifier = SHIFT;
+ }
+ if (s[2].equals("CTRL")){
+ testModifier = CTRL;
+ }
+ if (s[2].equals("ALT")){
+ testModifier = ALT;
+ }
+ }
+ System.out.println("Autorun : " +autorun);
+ System.out.println("Debug mode : " +debug);
+ System.out.println("Modifier to verify : " + testModifier);
+ }
+
+ public static void dumpValues(int button, int modifiers, int modifiersStandard, int modifiersEx, int modifiersExStandard){
+ System.out.println("Button = "+button + "Modifiers = "+ modifiers + " standard = "+ modifiersStandard);
+ System.out.println(" ModifiersEx = "+ modifiersEx + " standardEx = "+ modifiersExStandard);
+ }
+
+ private static int[] getStandardExArray(int testModifier) {
+ int [] curStandardExModifiers;
+ switch (testModifier){
+ case SHIFT:
+ curStandardExModifiers = modifiersExStandardTestSHIFT;
+ break;
+ case CTRL:
+ curStandardExModifiers = modifiersExStandardTestCTRL;
+ break;
+ case ALT:
+ curStandardExModifiers = modifiersExStandardTestALT;
+ break;
+ default: //NONE by default
+ curStandardExModifiers = modifiersExStandardTestNONE;
+ }
+ return curStandardExModifiers;
+ }
+
+ private static int[] getStandardArray(int testModifier) {
+ int [] curStandardModifiers;
+ switch (testModifier){
+ case SHIFT:
+ curStandardModifiers = modifiersStandardTestSHIFT;
+ break;
+ case CTRL:
+ curStandardModifiers = modifiersStandardTestCTRL;
+ break;
+ case ALT:
+ curStandardModifiers = modifiersStandardTestALT;
+ break;
+ default: //NONE by default
+ curStandardModifiers = modifiersStandardTestNONE;
+ }
+ return curStandardModifiers;
+ }
+
+}
+
+
+/* A class that invoke appropriate verification
+ * routine with current modifier.
+ */
+class CheckingModifierAdapter extends MouseAdapter{
+ int modifier;
+ public CheckingModifierAdapter(int modifier){
+ this.modifier = modifier;
+ }
+
+ public void mousePressed(MouseEvent e) {
+ System.out.println("PRESSED "+e);
+ if (e.getButton() > MouseEvent.BUTTON3) {
+ System.out.println("Extra button affected. Skip.");
+ } else {
+ MouseModifiersUnitTest_Standard.checkPressedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx(),
+ }
+ }
+ public void mouseReleased(MouseEvent e) {
+ System.out.println("RELEASED "+e);
+ if (e.getButton() > MouseEvent.BUTTON3) {
+ System.out.println("Extra button affected. Skip.");
+ } else {
+ MouseModifiersUnitTest_Standard.checkReleasedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx()
+ }
+ }
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("CLICKED "+e);
+ if (e.getButton() > MouseEvent.BUTTON3) {
+ System.out.println("Extra button affected. Skip.");
+ } else {
+ MouseModifiersUnitTest_Standard.checkClickedModifiersTest(modifier, e); //e.getButton(), e.getModifiers(), e.getModifiersEx()
+ }
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Robot/AcceptExtraMouseButtons/AcceptExtraMouseButtons.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,118 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that Robot is accepting extra mouse buttons
+ @author Andrei Dmitriev : area=awt.mouse
+ @library ../../regtesthelpers
+ @build Util
+ @run main AcceptExtraMouseButtons
+ */
+
+//if we do robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) the test must
+// 1) accept it (i.e. don't throw an IllegalArgumentException
+// 2) actually post a MouseEvent
+// Also, Robot should still accept InputEvent.BUTTONx_MASKs
+
+import java.awt.*;
+import java.awt.event.*;
+import sun.awt.SunToolkit;
+import test.java.awt.regtesthelpers.Util;
+
+public class AcceptExtraMouseButtons extends Frame {
+ static String tk = Toolkit.getDefaultToolkit().getClass().getName();
+ static Robot robot;
+ static int [] standardButtonMasks = {InputEvent.BUTTON1_MASK,
+ InputEvent.BUTTON2_MASK,
+ InputEvent.BUTTON3_MASK};
+ static int [] buttonsPressed;
+ static int [] buttonsReleased;
+ static int [] buttonsClicked;
+
+ static int buttonsNum = MouseInfo.getNumberOfButtons();
+
+ public static void main(String []s){
+
+ //MouseInfo.getNumberOfButtons() reports two more buttons on XToolkit
+ //as they reserved for wheel (both directions).
+ if (tk.equals("sun.awt.X11.XToolkit") || tk.equals("sun.awt.motif.MToolkit")) {
+ buttonsNum = buttonsNum - 2;
+ }
+ System.out.println("Number Of Buttons = "+ buttonsNum);
+ if (buttonsNum < 3) {
+ System.out.println("Linux and Windows systems should emulate three buttons if even there are only 1 or 2 are phsically available. Setting number of buttons to 3.");
+ buttonsNum = 3;
+ }
+
+ buttonsPressed = new int [buttonsNum];
+ buttonsReleased = new int [buttonsNum];
+ buttonsClicked = new int [buttonsNum];
+
+ AcceptExtraMouseButtons frame = new AcceptExtraMouseButtons();
+
+ MouseAdapter ma1 = new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ buttonsPressed[e.getButton() - 1] += 1;
+ System.out.println("PRESSED "+e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ buttonsReleased[e.getButton() - 1] += 1;
+ System.out.println("RELEASED "+e);
+ }
+ public void mouseClicked(MouseEvent e) {
+ buttonsClicked[e.getButton() - 1] += 1;
+ System.out.println("CLICKED "+e);
+ }
+ };
+ frame.addMouseListener(ma1);
+
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+
+ Util.waitForIdle(robot); //a time to show a Frame
+
+ try {
+ robot = new Robot();
+ robot.delay(1000);
+ robot.mouseMove(frame.getLocationOnScreen().x + frame.getWidth()/2,
+ frame.getLocationOnScreen().y + frame.getHeight()/2);
+
+ //TestCase 1: verify that all BUTTONx_DOWN_MASKs are accepted by the Robot.
+
+ for (int i = 0; i < buttonsNum; i++){
+ int buttonMask = InputEvent.getMaskForButton(i+1);
+ System.out.println("button to press = " +(i+1) + " : value passed to robot = " +buttonMask);
+ robot.mousePress(buttonMask);
+ robot.delay(30);
+ robot.mouseRelease(buttonMask);
+ Util.waitForIdle(robot);
+ }
+ for (int i = 0; i < buttonsNum; i++){
+ if (buttonsPressed[i] != 1 || buttonsReleased[i] != 1 || buttonsClicked[i] !=1 ) {
+ throw new RuntimeException("TESTCASE 1 FAILED : button " + (i+1) + " wasn't single pressed|released|clicked : "+ buttonsPressed[i] +" : "+ buttonsReleased[i] +" : "+ buttonsClicked[i]);
+ }
+ }
+
+ java.util.Arrays.fill(buttonsPressed, 0);
+ java.util.Arrays.fill(buttonsReleased, 0);
+ java.util.Arrays.fill(buttonsClicked, 0);
+ //TestCase 2: verify that all BUTTONx_MASKs are accepted by the Robot.
+ for (int i = 0; i < standardButtonMasks.length; i++){
+ int buttonMask = standardButtonMasks[i];
+ System.out.println("button to press = " +(i+1) + " : value passed to robot = " +buttonMask);
+ robot.mousePress(buttonMask);
+ robot.delay(30);
+ robot.mouseRelease(buttonMask);
+ Util.waitForIdle(robot);
+ }
+ for (int i = 0; i < standardButtonMasks.length; i++){
+ if (buttonsPressed[i] != 1 || buttonsReleased[i] != 1 || buttonsClicked[i] !=1 ) {
+ throw new RuntimeException("TESTCASE 2 FAILED : button " + (i+1) + " wasn't single pressed|released|clicked : "+ buttonsPressed[i] +" : "+ buttonsReleased[i] +" : "+ buttonsClicked[i]);
+ }
+ }
+
+ } catch (Exception e){
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Robot/ManualInstructions/ManualInstructions.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,305 @@
+/*
+ test %W% %E% %I%, %G%
+ @bug 6315717
+ @summary manual control over the Robot
+ @author Andrei Dmitriev : area=awt.robot
+ @run applet/manual=yesno ManualInstructions.html
+*/
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class ManualInstructions extends Applet
+{
+ final static long SEND_DELAY = 1000;
+
+ public static void main(String s[]){
+ ManualInstructions mi = new ManualInstructions();
+ mi.init();
+ mi.start();
+ }
+
+ static Robot robot;
+ Point mouseLocation; //where mouse should be pressed each time
+ Panel target = new Panel();
+ Button pressOn = new Button("press on ...");
+ Button releaseOn = new Button("release on ...");
+ Button clickOn = new Button("click on ...");
+ Choice buttonNumber = new Choice();
+
+ public void init()
+ {
+ try {
+ robot = new Robot();
+ } catch (AWTException ex) {
+ ex.printStackTrace();
+ throw new RuntimeException(ex);
+ }
+ this.setLayout (new BorderLayout ());
+
+ target.setBackground(Color.green);
+ target.setName("GreenBox");//for the ease of debug
+ target.setPreferredSize(new Dimension(100, 100));
+ String toolkit = Toolkit.getDefaultToolkit().getClass().getName();
+
+ // on X systems two buttons are reserved for wheel though they are countable by MouseInfo.
+ int buttonsNumber = toolkit.equals("sun.awt.windows.WToolkit")?MouseInfo.getNumberOfButtons():MouseInfo.getNumberOfButtons()-2;
+
+ for (int i = 0; i < 8; i++){
+ buttonNumber.add("BUTTON"+(i+1)+"_MASK");
+ }
+
+ pressOn.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ System.out.println("Now pressing : " + (buttonNumber.getSelectedIndex()+1));
+
+ Timer timer = new Timer();
+ TimerTask robotInteraction = new TimerTask(){
+ public void run(){
+ robot.mouseMove(updateTargetLocation().x, updateTargetLocation().y);
+ robot.mousePress(getMask(buttonNumber.getSelectedIndex()+1));
+ }
+ };
+ timer.schedule(robotInteraction, SEND_DELAY);
+ }
+ });
+
+ releaseOn.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ System.out.println("Now releasing : " + (buttonNumber.getSelectedIndex()+1));
+ Timer timer = new Timer();
+ TimerTask robotInteraction = new TimerTask(){
+ public void run(){
+ robot.mouseMove(updateTargetLocation().x, updateTargetLocation().y);
+ robot.mouseRelease(getMask(buttonNumber.getSelectedIndex()+1));
+ }
+ };
+ timer.schedule(robotInteraction, SEND_DELAY);
+ }
+ });
+
+ clickOn.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ System.out.println("Now clicking : " + (buttonNumber.getSelectedIndex()+1));
+ Timer timer = new Timer();
+ TimerTask robotInteraction = new TimerTask(){
+ public void run(){
+ robot.mouseMove(updateTargetLocation().x, updateTargetLocation().y);
+ robot.mousePress(getMask(buttonNumber.getSelectedIndex()+1));
+ robot.mouseRelease(getMask(buttonNumber.getSelectedIndex()+1));
+ }
+ };
+ timer.schedule(robotInteraction, SEND_DELAY);
+ }
+
+ });
+ target.addMouseListener(new MouseAdapter(){
+ public void mousePressed(MouseEvent e){
+ Sysout.println(""+e);
+ }
+ public void mouseReleased(MouseEvent e){
+ Sysout.println(""+e);
+ }
+ public void mouseClicked(MouseEvent e){
+ Sysout.println(""+e);
+ }
+ });
+
+ String[] instructions =
+ {
+ "Do provide an instruction to the robot by",
+ "choosing the button number to act and ",
+ "pressing appropriate java.awt.Button on the left.",
+ "Inspect an output in the TextArea below.",
+ "Please don't generate non-natural sequences like Release-Release, etc.",
+ "If you use keyboard be sure that you released the keyboard shortly.",
+ "If events are generated well press Pass, otherwise Fail."
+ };
+ Sysout.createDialogWithInstructions( instructions );
+
+ }//End init()
+
+ private int getMask(int button){
+ return InputEvent.getMaskForButton(button);
+
+ /*
+ //this only works for standard buttons and for old JDK builds
+ int mask = 0;
+ switch (button){
+ case 1: {
+ mask = InputEvent.BUTTON1_MASK;
+ break;
+ }
+ case 2: {
+ mask = InputEvent.BUTTON2_MASK;
+ break;
+ }
+ case 3: {
+ mask = InputEvent.BUTTON3_MASK;
+ break;
+ }
+ }
+ return mask;
+ */
+ }
+
+ private Point updateTargetLocation() {
+ return new Point(target.getLocationOnScreen().x + target.getWidth()/2, target.getLocationOnScreen().y + target.getHeight()/2);
+ }
+
+ public void start ()
+ {
+ //Get things going. Request focus, set size, et cetera
+ setSize (200,200);
+ setVisible(true);
+ validate();
+ Frame f = new Frame ("Set action for Robot here.");
+ f.setLayout(new FlowLayout());
+ f.add(buttonNumber);
+ f.add(pressOn);
+ f.add(releaseOn);
+ f.add(clickOn);
+ f.add(target);
+ f.pack();
+ f.setVisible(true);
+ }// start()
+}// class
+
+/* Place other classes related to the test after this line */
+
+
+/****************************************************
+ 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 );
+ }
+
+}// 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 = 120;
+
+ //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/jdk/test/java/awt/Robot/RobotExtraButton/RobotExtraButton.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,79 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that robot could accept extra buttons
+ @author Andrei Dmitriev : area=awt.mouse
+ @library ../../regtesthelpers
+ @build Util
+ @run main RobotExtraButton
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import test.java.awt.regtesthelpers.Util;
+
+public class RobotExtraButton extends Frame {
+ static Robot robot;
+ public static void main(String []s){
+ RobotExtraButton frame = new RobotExtraButton();
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+ frame.addMouseListener(new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ System.out.println("PRESSED "+e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ System.out.println("RELEASED "+e);
+ }
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("CLICKED "+e);
+ }
+ });
+ Util.waitForIdle(robot);
+ int [] buttonMask = new int[MouseInfo.getNumberOfButtons()]; // = InputEvent.getButtonDownMasks();
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonMask[i] = InputEvent.getMaskForButton(i+1);
+ System.out.println("TEST: "+buttonMask[i]);
+ }
+
+ try {
+ robot = new Robot();
+ robot.mouseMove(frame.getLocationOnScreen().x + frame.getWidth()/2, frame.getLocationOnScreen().y + frame.getHeight()/2);
+ /*
+ if (MouseInfo.getNumberOfButtons() <= 3) {
+ System.out.println("Number Of Buttons = "+ MouseInfo.getNumberOfButtons() +". Finish!");
+ return;
+ }*/
+
+ System.out.println("TEST: press 1");
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.delay(50);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ Util.waitForIdle(robot);
+
+ System.out.println("TEST: press 2");
+
+ robot.mousePress(InputEvent.BUTTON2_MASK);
+ robot.delay(50);
+ robot.mouseRelease(InputEvent.BUTTON2_MASK);
+ Util.waitForIdle(robot);
+ System.out.println("TEST: press 3");
+
+ robot.mousePress(InputEvent.BUTTON3_MASK);
+ robot.delay(50);
+ robot.mouseRelease(InputEvent.BUTTON3_MASK);
+ Util.waitForIdle(robot);
+ System.out.println("--------------------------------------------------");
+ for (int i = 0; i < buttonMask.length; i++){
+ System.out.println("button would = " +i + " : value = " +buttonMask[i]);
+ robot.mousePress(buttonMask[i]);
+ robot.delay(50);
+ robot.mouseRelease(buttonMask[i]);
+ Util.waitForIdle(robot);
+ }
+ } catch (Exception e){
+ e.printStackTrace();
+ throw new RuntimeException("Test failed.", e);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/Headless/AWTEventListener/AWTListener.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,48 @@
+/*
+ @test
+ @bug 6738181
+ @library ../../../regtesthelpers
+ @build Sysout
+ @summary Toolkit.getAWTEventListeners returns empty array
+ @author andrei dmitriev: area=awt.headless
+ @run main/othervm -Djava.awt.headless=true AWTListener
+*/
+
+/**
+ * In a headless mode add a listener for container events.
+ * Check if a single listener is still assigned to the Toolkit class.
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import test.java.awt.regtesthelpers.Sysout;
+
+public class AWTListener {
+ public static void main(String []s) {
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+
+ AWTEventListener orig = new AWTEventListener() {
+ public void eventDispatched(AWTEvent event) { }
+ };
+
+ Sysout.println("Test: listener to add = " +orig);
+ toolkit.addAWTEventListener(orig, AWTEvent.CONTAINER_EVENT_MASK);
+
+ for (AWTEventListener l: toolkit.getAWTEventListeners()){
+ Sysout.println("Test: listener = " +l+" ");
+ }
+
+ if ( toolkit.getAWTEventListeners().length == 0 ) {
+ throw new RuntimeException("Case 1. An empty array returned unexpectedly");
+ }
+
+ for (AWTEventListener l: toolkit.getAWTEventListeners(AWTEvent.CONTAINER_EVENT_MASK)){
+ Sysout.println("Test: listener = " +l);
+ }
+
+ if ( toolkit.getAWTEventListeners(AWTEvent.CONTAINER_EVENT_MASK).length == 0 ) {
+ throw new RuntimeException("Case 2. An empty array returned unexpectedly");
+ }
+ Sysout.println("Test PASSED");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_1.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,36 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that system property sun.awt.enableExtraMouseButtons is true by default
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main SystemPropTest_1
+ */
+//1) Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns false initially.
+//2) Verifies that Toolkit.areExtraMouseButtonsEnabled() returns true by default.
+// This must initlizes the Toolkit class.
+//3) Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns true (default).
+import java.awt.*;
+
+public class SystemPropTest_1 {
+
+ public static void main(String []s){
+ boolean propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ System.out.println("1. System.getProperty = " + propValue);
+ if (propValue){
+ throw new RuntimeException("TEST FAILED(1) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (!Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED : Toolkit.areExtraMouseButtonsEnabled() returns false");
+ }
+
+ System.getProperties().list(System.out);
+ System.out.println("XXXX. System.getProperty = " + System.getProperty("sun.awt.enableExtraMouseButtons"));
+
+ propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ System.out.println("2. System.getProperty = " + propValue);
+ if (!propValue){
+ throw new RuntimeException("TEST FAILED(2) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ System.out.println("Test passed.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_2.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,25 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to true by the command line
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main/othervm -Dsun.awt.enableExtraMouseButtons=true SystemPropTest_2
+ */
+//1) Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns true if set through the command line.
+//2) Verifies that Toolkit.areExtraMouseButtonsEnabled() returns true if the proprty is set through the command line.
+import java.awt.*;
+
+public class SystemPropTest_2 {
+
+ public static void main(String []s){
+ boolean propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ System.out.println("System.getProperty = " + propValue);
+ if (!propValue){
+ throw new RuntimeException("TEST FAILED : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (!Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED : Toolkit.areExtraMouseButtonsEnabled() returns false");
+ }
+ System.out.println("Test passed.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_3.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,26 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to false by the command line
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main/othervm -Dsun.awt.enableExtraMouseButtons=false SystemPropTest_3
+ */
+//1) Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns false if set through the command line.
+//2) Verifies that Toolkit.areExtraMouseButtonsEnabled() returns false if the proprty is set through the command line.
+import java.awt.*;
+
+public class SystemPropTest_3 {
+
+ public static void main(String []s){
+ boolean propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ System.out.println("Test System.getProperty = " + System.getProperty("sun.awt.enableExtraMouseButtons"));
+ System.out.println("System.getProperty = " + propValue);
+ if (propValue){
+ throw new RuntimeException("TEST FAILED : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED : Toolkit.areExtraMouseButtonsEnabled() returns true");
+ }
+ System.out.println("Test passed.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_4.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,42 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to true by the System class API.
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main SystemPropTest_4
+ */
+//1)
+// - Use System.setProperty("sun.awt.enableExtraMouseButtons", "true")
+// - Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns true
+// - Verifies that Toolkit.areExtraMouseButtonsEnabled() returns true.
+//2)
+// - Use System.setProperty("sun.awt.enableExtraMouseButtons", "false")
+// - Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns false
+// - Verifies that Toolkit.areExtraMouseButtonsEnabled() returns true still.
+
+import java.awt.*;
+
+public class SystemPropTest_4 {
+ public static void main(String []s){
+ System.out.println("STAGE 1");
+ System.setProperty("sun.awt.enableExtraMouseButtons", "true");
+ boolean propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ if (!propValue){
+ throw new RuntimeException("TEST FAILED(1) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (!Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED(1) : Toolkit.areExtraMouseButtonsEnabled() returns false");
+ }
+
+ System.out.println("STAGE 2");
+ System.setProperty("sun.awt.enableExtraMouseButtons", "false");
+ propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ if (propValue){
+ throw new RuntimeException("TEST FAILED(2) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (!Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED(2) : Toolkit.areExtraMouseButtonsEnabled() returns false");
+ }
+ System.out.println("Test passed.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_5.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,42 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to false by the System class API.
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main SystemPropTest_5
+ */
+//1)
+// - Use System.setProperty("sun.awt.enableExtraMouseButtons", "false")
+// - Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns false
+// - Verifies that Toolkit.areExtraMouseButtonsEnabled() returns false.
+//2)
+// - Use System.setProperty("sun.awt.enableExtraMouseButtons", "true")
+// - Verifies that System.getProperty("sun.awt.enableExtraMouseButtons") returns true
+// - Verifies that Toolkit.areExtraMouseButtonsEnabled() returns false still.
+
+import java.awt.*;
+
+public class SystemPropTest_5 {
+ public static void main(String []s){
+ System.out.println("STAGE 1");
+ System.setProperty("sun.awt.enableExtraMouseButtons", "false");
+ boolean propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ if (propValue){
+ throw new RuntimeException("TEST FAILED(1) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED(1) : Toolkit.areExtraMouseButtonsEnabled() returns true");
+ }
+
+ System.out.println("STAGE 2");
+ System.setProperty("sun.awt.enableExtraMouseButtons", "true");
+ propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ if (!propValue){
+ throw new RuntimeException("TEST FAILED(2) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled()){
+ throw new RuntimeException("TEST FAILED(2) : Toolkit.areExtraMouseButtonsEnabled() returns true");
+ }
+ System.out.println("Test passed.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,143 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that sun.awt.enableExtraMouseButtons = false consumes extra events
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main/othervm -Dsun.awt.enableExtraMouseButtons=false ToolkitPropertyTest_Disable
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+
+// Testcase 1: set to FALSE and check
+// Testcase 2: set to FALSE and check that extra events are not coming
+// check that standard events are coming
+
+public class ToolkitPropertyTest_Disable extends Frame {
+ static boolean propValue;
+ static Robot robot;
+ static int [] buttonsPressed;
+ static int [] buttonsReleased;
+ static int [] buttonsClicked;
+
+ static boolean lessThenFourButtons;
+
+ public static void main(String []s){
+ propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ buttonsPressed = new int [MouseInfo.getNumberOfButtons()];
+ buttonsReleased = new int [MouseInfo.getNumberOfButtons()];
+ buttonsClicked = new int [MouseInfo.getNumberOfButtons()];
+
+ ToolkitPropertyTest_Disable frame = new ToolkitPropertyTest_Disable();
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+
+ MouseAdapter ma1 = new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ buttonsPressed[e.getButton() - 1] += 1;
+ System.out.println("PRESSED "+e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ buttonsReleased[e.getButton() - 1] += 1;
+ System.out.println("RELEASED "+e);
+ }
+ public void mouseClicked(MouseEvent e) {
+ buttonsClicked[e.getButton() - 1] += 1;
+ System.out.println("CLICKED "+e);
+ }
+ };
+
+ try {
+ robot = new Robot();
+ robot.delay(1000);
+ robot.mouseMove(frame.getLocationOnScreen().x + frame.getWidth()/2, frame.getLocationOnScreen().y + frame.getHeight()/2);
+
+ System.out.println("Property = " + propValue);
+ testCase0();
+
+ testCase1();
+ System.out.println("Number Of Buttons = "+ MouseInfo.getNumberOfButtons());
+
+ lessThenFourButtons = (MouseInfo.getNumberOfButtons() <= 3);
+ if ( !lessThenFourButtons ) {
+ frame.addMouseListener(ma1);
+ testCase2();
+ }
+ } catch (Exception e){
+ e.printStackTrace();
+// throw new RuntimeException(e);
+ } finally {
+// frame.removeMouseListener(ma1);
+ }
+ }
+
+ public static void testCase0(){
+ if (propValue){
+ throw new RuntimeException("TEST FAILED (0): System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ }
+
+ public static void testCase1(){
+ if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled() == true){
+ throw new RuntimeException("TEST FAILED (1): setting to FALSE. Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled() = " + Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled());
+ }
+ }
+
+ public static void testCase2(){
+ emptyArrays();
+ int [] buttonMasks = new int[MouseInfo.getNumberOfButtons()]; // = InputEvent.getButtonDownMasks();
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonMasks[i] = InputEvent.getMaskForButton(i+1);
+ System.out.println("TEST: "+buttonMasks[i]);
+ }
+
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ System.out.println("button to press = " +(i+1) + " : value passed to robot = " +buttonMasks[i]);
+ try {
+ robot.mousePress(buttonMasks[i]);
+ robot.delay(70);
+ robot.mouseRelease(buttonMasks[i]);
+ robot.delay(200);
+ //no exception is thrown
+ if (i >= 3) {
+ throw new RuntimeException("TESTCASE 2 FAILED : robot accepted the extra button " + (i+1) + " instead of throwing an exception.");
+ }
+ } catch (IllegalArgumentException e){
+ if (i >= 3) {
+ System.out.println("Passed: an exception caught for extra button.");
+ } else {
+ throw new RuntimeException("TESTCASE 2 FAILED : exception happen on standard button.", e);
+ }
+ }
+ }
+ robot.delay(2000);
+ if (MouseInfo.getNumberOfButtons() < 3) {
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ if (buttonsPressed[i] != 1 || buttonsReleased[i] != 1 || buttonsClicked[i] !=1 ) {
+ throw new RuntimeException("TESTCASE 2 FAILED : button " + (i+1) + " wasn't single pressed.");
+ }
+ }
+ } else {
+ for (int i = 0; i < 3; i++){
+ if (buttonsPressed[i] != 1 || buttonsReleased[i] != 1 || buttonsClicked[i] !=1 ) {
+ throw new RuntimeException("TESTCASE 2 FAILED : button " + (i+1) + " wasn't single pressed.");
+ }
+ }
+
+ for (int i = 3; i < MouseInfo.getNumberOfButtons(); i++){
+ if (buttonsPressed[i] != 0 || buttonsReleased[i] != 0 || buttonsClicked[i] != 0 ) {
+ throw new RuntimeException("TESTCASE 2 FAILED : button " + (i+1) + " was pressed.");
+ }
+ }
+ }
+ }
+
+ public static void emptyArrays(){
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonsPressed[i] = 0;
+ buttonsReleased[i] = 0;
+ buttonsClicked[i] = 0;
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,120 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that sun.awt.enableExtraMouseButtons is working
+ @author Andrei Dmitriev : area=awt.mouse
+ @run main/othervm -Dsun.awt.enableExtraMouseButtons=true ToolkitPropertyTest_Enable
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+
+// Testcase 1: set to TRUE (via jtreg option)
+// Testcase 2: set to TRUE and check that extra events are coming
+// check that standard events are coming
+
+public class ToolkitPropertyTest_Enable extends Frame {
+ static boolean propValue;
+ static Robot robot;
+ static int [] buttonsPressed;
+ static int [] buttonsReleased;
+ static int [] buttonsClicked;
+
+ public static void main(String []s){
+ propValue = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons"));
+ buttonsPressed = new int [MouseInfo.getNumberOfButtons()];
+ buttonsReleased = new int [MouseInfo.getNumberOfButtons()];
+ buttonsClicked = new int [MouseInfo.getNumberOfButtons()];
+
+ ToolkitPropertyTest_Enable frame = new ToolkitPropertyTest_Enable();
+ frame.setSize(300, 300);
+ frame.setVisible(true);
+
+ MouseAdapter ma1 = new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ buttonsPressed[e.getButton() - 1] += 1;
+ System.out.println("PRESSED "+e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ buttonsReleased[e.getButton() - 1] += 1;
+ System.out.println("RELEASED "+e);
+ }
+ public void mouseClicked(MouseEvent e) {
+ buttonsClicked[e.getButton() - 1] += 1;
+ System.out.println("CLICKED "+e);
+ }
+ };
+ // frame.addMouseListener(ma1);
+
+ try {
+ robot = new Robot();
+ robot.delay(1000);
+ robot.mouseMove(frame.getLocationOnScreen().x + frame.getWidth()/2, frame.getLocationOnScreen().y + frame.getHeight()/2);
+
+ System.out.println("Property = " + propValue);
+ testCase0();
+
+ testCase1();
+ System.out.println("Number Of Buttons = "+ MouseInfo.getNumberOfButtons());
+
+ boolean lessThenFourButtons = (MouseInfo.getNumberOfButtons() <= 3);
+ if ( !lessThenFourButtons ) {
+ frame.addMouseListener(ma1);
+ testCase2();
+ // testCase3();
+ // testCase4();
+ frame.removeMouseListener(ma1);
+ }
+ } catch (Exception e){
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public static void testCase0(){
+ if (!propValue){
+ throw new RuntimeException("TEST FAILED (0) : System property sun.awt.enableExtraMouseButtons = " + propValue);
+ }
+ }
+
+ public static void testCase1(){
+ if (Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled() == false){
+ throw new RuntimeException("TEST FAILED (1) : setting to TRUE. enabled = " + Toolkit.getDefaultToolkit().areExtraMouseButtonsEnabled());
+ }
+ }
+
+ public static void testCase2(){
+ emptyArrays();
+ //we can't post a message from an unexistent button
+ int [] buttonMasks = new int[MouseInfo.getNumberOfButtons()]; // = InputEvent.getButtonDownMasks();
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonMasks[i] = InputEvent.getMaskForButton(i+1);
+ System.out.println("TEST: "+buttonMasks[i]);
+ }
+
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ System.out.println("button to press = " +(i+1) + " : value passed to robot = " +buttonMasks[i]);
+ robot.mousePress(buttonMasks[i]);
+ robot.delay(70);
+ robot.mouseRelease(buttonMasks[i]);
+ robot.delay(200);
+ }
+ robot.delay(1000);
+
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ if (buttonsPressed[i] != 1 || buttonsReleased[i] != 1 || buttonsClicked[i] !=1 ) {
+ throw new RuntimeException("TESTCASE 2 FAILED : button " + (i+1) + " wasn't single pressed|released|clicked : "+ buttonsPressed[i] +" : "+ buttonsReleased[i] +" : "+ buttonsClicked[i]);
+ }
+ }
+ }
+
+ public static void emptyArrays(){
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonsPressed[i] = 0;
+ buttonsReleased[i] = 0;
+ buttonsClicked[i] = 0;
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/OwnedWindowsLeak/OwnedWindowsLeak.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,104 @@
+/*
+ * 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 6758673
+ @summary Tests that windows are removed from owner's child windows list
+ @author art: area=awt.toplevel
+ @run main OwnedWindowsLeak
+*/
+
+import java.awt.*;
+import java.awt.event.*;
+
+import java.lang.ref.*;
+import java.lang.reflect.*;
+
+import java.util.*;
+
+public class OwnedWindowsLeak
+{
+ public static void main(String[] args)
+ {
+ Frame owner = new Frame("F");
+
+ // First, create many windows
+ Vector<WeakReference<Window>> children =
+ new Vector<WeakReference<Window>>();
+ for (int i = 0; i < 1000; i++)
+ {
+ Window child = new Window(owner);
+ children.add(new WeakReference<Window>(child));
+ }
+
+ // Second, make sure all the memory is allocated
+ Vector garbage = new Vector();
+ while (true)
+ {
+ try
+ {
+ garbage.add(new byte[1000]);
+ }
+ catch (OutOfMemoryError e)
+ {
+ break;
+ }
+ }
+
+ // Third, make sure all the weak references are null
+ for (WeakReference<Window> ref : children)
+ {
+ if (ref.get() != null)
+ {
+ throw new RuntimeException("Test FAILED: some of child windows are not GCed");
+ }
+ }
+
+ // Fourth, make sure owner's children list contains no elements
+ try
+ {
+ Field f = Window.class.getDeclaredField("ownedWindowList");
+ f.setAccessible(true);
+ Vector ownersChildren = (Vector)f.get(owner);
+ if (ownersChildren.size() > 0)
+ {
+ throw new RuntimeException("Test FAILED: some of the child windows are not removed from owner's children list");
+ }
+ }
+ catch (NoSuchFieldException z)
+ {
+ System.out.println("Test PASSED: no 'ownedWindowList' field in Window class");
+ return;
+ }
+ catch (Exception z)
+ {
+ throw new RuntimeException("Test FAILED: unexpected exception", z);
+ }
+
+ // Test passed
+ System.out.println("Test PASSED");
+
+ owner.dispose();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/InputEvent/ButtonArraysEquality/ButtonArraysEquality.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,83 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that InputEvents button masks arrays are the same
+ @author Andrei Dmitriev : area=awt.event
+ @run main ButtonArraysEquality
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import java.lang.reflect.*;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+// get array InputEvent.BUTTON_MASK via reflection
+// get array InputEvent.BUTTON_DOWN_MASK via reflection
+// compare their lengths and values
+
+public class ButtonArraysEquality {
+ static int [] eventDownMask = new int []{InputEvent.BUTTON1_DOWN_MASK, InputEvent.BUTTON2_DOWN_MASK, InputEvent.BUTTON3_DOWN_MASK};
+
+ public static void main(String []s){
+ int [] buttonDownMasksAPI = new int [MouseInfo.getNumberOfButtons()];
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonDownMasksAPI[i] = InputEvent.getMaskForButton(i+1);
+ System.out.println("TEST: "+buttonDownMasksAPI[i]);
+ }
+
+ // getButtonDownMasks()
+ Object obj = AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ try {
+ Class clazz = Class.forName("java.awt.event.InputEvent");
+ Method method = clazz.getDeclaredMethod("getButtonDownMasks",new Class [] {});
+ if (method != null) {
+ method.setAccessible(true);
+ return method.invoke(null, (Object[])null);
+ }
+ }catch (Exception e){
+ throw new RuntimeException("Test failed. Exception occured:", e);
+ }
+ return null;
+ }
+ });
+
+ int [] buttonDownMasks = new int [Array.getLength(obj)];
+ checkNullAndPutValuesToArray(buttonDownMasks, obj);
+
+ //check lengths: array shouldn't contain less elements then the number of buttons on a mouse
+ if (buttonDownMasks.length < buttonDownMasksAPI.length){
+ throw new RuntimeException("Test failed. The lengths array is less then the number of buttons");
+ }
+
+ // verify values for first three buttons
+ for (int i = 0; i < 3; i++) {
+ if (eventDownMask[i] != buttonDownMasks[i])
+ {
+ System.out.println("Test : "+ i + " | " + " | " +eventDownMask[i] + " | "+ buttonDownMasks[i]);
+ throw new RuntimeException("Failure: masks are not correct for standard buttons");
+ }
+ }
+
+ // verify values for extra buttons if any
+ for (int i = 3; i < MouseInfo.getNumberOfButtons(); i++) {
+ if (buttonDownMasksAPI[i] != buttonDownMasks[i]) {
+ throw new RuntimeException("Failure: masks are not the same for extra buttons");
+ }
+ }
+ System.out.println("Test passed.");
+ }
+
+ public static void checkNullAndPutValuesToArray(int [] array, Object obj){
+ if (obj == null){
+ throw new RuntimeException("Test failed. The array obtained via reflection is "+obj);
+ }
+
+ for (int i = 0; i < Array.getLength(obj); i++){
+ System.out.println("Test (Reflection): "+ Array.getInt(obj, i));
+ array[i] = Array.getInt(obj, i);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/AcceptExtraButton/AcceptExtraButton.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,53 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that MouseEvent CTOR accepts extra mouse button numbers
+ @author Andrei Dmitriev : area=awt.event
+ @run main AcceptExtraButton
+ */
+
+//package acceptextrabutton;
+
+import java.awt.*;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseAdapter;
+
+public class AcceptExtraButton extends Frame {
+ static int [] eventID = new int []{MouseEvent.MOUSE_PRESSED, MouseEvent.MOUSE_RELEASED, MouseEvent.MOUSE_CLICKED};
+
+ public static void main(String []s){
+ AcceptExtraButton f = new AcceptExtraButton();
+ f.setSize(300, 300);
+ f.setVisible(true);
+
+ for (int buttonId = 0; buttonId<eventID.length; buttonId++) {
+ for (int button = 0; button <= MouseInfo.getNumberOfButtons(); button++){
+ System.out.println("button == "+button);
+ MouseEvent me = new MouseEvent(f,
+ eventID[buttonId],
+ System.currentTimeMillis(),
+ 0, //MouseEvent.BUTTON1_DOWN_MASK, modifiers
+ 100, 100, // x, y
+ 150, 150, // x, y on screen
+ 1, //clickCount
+ false, //popupTrigger
+ button );// MouseEvent.NOBUTTON : button
+
+ System.out.println("dispatching >>>"+me);
+ f.dispatchEvent( ( AWTEvent )me );
+ }
+ }
+ MouseAdapter ma1 = new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ System.out.println("PRESSED "+e);
+ }
+ public void mouseReleased(MouseEvent e) {
+ System.out.println("RELEASED "+e);
+ }
+ public void mouseClicked(MouseEvent e) {
+ System.out.println("CLICKED "+e);
+ }
+ };
+ f.addMouseListener(ma1);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/CTORRestrictions/CTORRestrictions.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,89 @@
+/*
+ test %I% %E%
+ @bug 6315717
+ @summary verifies that MouseEvent could be constructed correctly for mouse extra buttons in regard to sun.awt.enableExtraMouseButtons property
+ @author Andrei Dmitriev : area=awt.event
+ @run main CTORRestrictions
+ */
+
+/*
+ * verify that user can create the MouseEvent? with button1|2|3|4|5|... when property "sun.awt.enableExtraMouseButtons" is true by default
+ */
+import java.awt.*;
+import java.awt.event.*;
+
+public class CTORRestrictions{
+ static Frame frame = new Frame("MouseEvent Test Frame");
+ static Point mousePosition;
+ static Point mousePositionOnScreen;
+
+ public static void main(String []s){
+ Robot robot = null;
+ try {
+ robot = new Robot();
+ } catch (AWTException ex) {
+ throw new RuntimeException("Test Failed", ex);
+ }
+ frame.setSize (200,200);
+ frame.setLocation (300, 400);
+ frame.setVisible(true);
+ robot.delay(1000);
+ System.out.println("sun.awt.enableExtraMouseButtons = "+Toolkit.getDefaultToolkit().getDesktopProperty("sun.awt.enableExtraMouseButtons"));
+ mousePosition = new Point(100, 100);
+ mousePositionOnScreen = new Point(frame.getLocationOnScreen().x + mousePosition.x,
+ frame.getLocationOnScreen().y + mousePosition.y);
+
+ /*
+ * On Linux the native system count a wheel (both directions) as two more buttons on a mouse.
+ * So, MouseInfo.getNumberOfButtons() would report 5 buttons on a three-button mouse.
+ * On Windows it would still report that MouseInfo.getNumberOfButtons() == 3.
+ * We should handle XToolkit case and iterate through the buttons
+ * up to (MouseInfo.getNumberOfButtons() - 2) value.
+ */
+ int numberOfButtons;
+ if (Toolkit.getDefaultToolkit().getClass().getName().equals("sun.awt.windows.WToolkit")){
+ numberOfButtons = MouseInfo.getNumberOfButtons();
+ } else {
+ numberOfButtons = MouseInfo.getNumberOfButtons() - 2;
+ }
+ System.out.println("Stage 1. Number of buttons = "+ numberOfButtons);
+
+ for (int buttonId = 1; buttonId <= numberOfButtons; buttonId++){
+ postMouseEventNewCtor(buttonId);
+ }
+
+ System.out.println("Stage 2. Number of buttons = "+ numberOfButtons);
+ for (int buttonId = 1; buttonId <= numberOfButtons; buttonId++){
+ postMouseEventOldCtor(buttonId);
+ }
+ System.out.println("Test passed.");
+ }
+
+ public static void postMouseEventNewCtor(int buttonId) {
+ MouseEvent me = new MouseEvent(frame,
+ MouseEvent.MOUSE_PRESSED,
+ System.currentTimeMillis(),
+ MouseEvent.BUTTON1_DOWN_MASK,
+ mousePosition.x, mousePosition.y,
+ mousePositionOnScreen.x,
+ mousePositionOnScreen.y,
+ 1,
+ false, //popupTrigger
+ buttonId //button
+ );
+ frame.dispatchEvent( ( AWTEvent )me );
+ }
+
+ public static void postMouseEventOldCtor(int buttonId) {
+ MouseEvent meOld = new MouseEvent(frame,
+ MouseEvent.MOUSE_PRESSED,
+ System.currentTimeMillis(),
+ MouseEvent.BUTTON1_DOWN_MASK,
+ mousePosition.x, mousePosition.y,
+ 1,
+ false, //popupTrigger
+ buttonId //button
+ );
+ frame.dispatchEvent( ( AWTEvent )meOld );
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/CTORRestrictions/CTORRestrictions_Disable.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,101 @@
+/*
+ test %I% %E%
+ @bug 6315717
+ @summary verifies that MouseEvent could be constructed correctly for mouse extra buttons in regard to sun.awt.enableExtraMouseButtons property
+ @author Andrei Dmitriev : area=awt.event
+ @run main/othervm -Dsun.awt.enableExtraMouseButtons=false CTORRestrictions_Disable
+ */
+
+/*
+ * verify that user can't create the MouseEvent? with button4|5|... when property "sun.awt.enableExtraMouseButtons"=false
+ * verify that user can create the MouseEvent? with button1|2|3 when property "sun.awt.enableExtraMouseButtons"=false
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+
+public class CTORRestrictions_Disable {
+ static Frame frame = new Frame("MouseEvent Test Frame");
+ static Point mousePosition;
+ static Point mousePositionOnScreen;
+
+ public static void main(String []s){
+ Robot robot = null;
+ try {
+ robot = new Robot();
+ } catch (AWTException ex) {
+ throw new RuntimeException("Test Failed", ex);
+ }
+ frame.setSize (200,200);
+ frame.setLocation (300, 400);
+ frame.setVisible(true);
+ robot.delay(1000);
+ System.out.println(Toolkit.getDefaultToolkit().getDesktopProperty("sun.awt.enableExtraMouseButtons"));
+ mousePosition = new Point(100, 100);
+ mousePositionOnScreen = new Point(frame.getLocationOnScreen().x + mousePosition.x,
+ frame.getLocationOnScreen().y + mousePosition.y);
+
+ System.out.println("Stage 1");
+ for (int buttonId = 1; buttonId <= MouseInfo.getNumberOfButtons(); buttonId++){
+ try {
+ postMouseEventNewCtor(buttonId);
+ if (buttonId > 3) {
+ throw new RuntimeException("Stage 1 FAILED: MouseEvent CTOR accepted the extra button " + (buttonId+1) + " instead of throwing an exception.");
+ }
+ } catch (IllegalArgumentException e){
+ if (buttonId > 3) {
+ System.out.println("Passed: an exception caught for extra button.");
+ } else {
+ throw new RuntimeException("Stage 1 FAILED : exception happen on standard button.", e);
+ }
+ }
+ }
+
+ System.out.println("Stage 2");
+ for (int buttonId = 1; buttonId <= MouseInfo.getNumberOfButtons(); buttonId++){
+ try {
+ postMouseEventOldCtor(buttonId);
+ if (buttonId > 3) {
+ throw new RuntimeException("Stage 2 FAILED: MouseEvent CTOR accepted the extra button " + (buttonId+1) + " instead of throwing an exception.");
+ }
+ } catch (IllegalArgumentException e){
+ if (buttonId > 3) {
+ System.out.println("Passed: an exception caught for extra button.");
+ } else {
+ throw new RuntimeException("Stage 2 FAILED : exception happen on standard button.", e);
+ }
+ }
+ }
+ System.out.println("Test passed.");
+ }
+
+ public static void postMouseEventNewCtor(int buttonId) {
+ MouseEvent me = new MouseEvent(frame,
+ MouseEvent.MOUSE_PRESSED,
+ System.currentTimeMillis(),
+ MouseEvent.BUTTON1_DOWN_MASK,
+ mousePosition.x, mousePosition.y,
+ mousePositionOnScreen.x,
+ mousePositionOnScreen.y,
+ 1,
+ false, //popupTrigger
+ buttonId //button
+ );
+ frame.dispatchEvent( ( AWTEvent )me );
+ }
+
+ public static void postMouseEventOldCtor(int buttonId) {
+ MouseEvent meOld = new MouseEvent(frame,
+ MouseEvent.MOUSE_PRESSED,
+ System.currentTimeMillis(),
+ MouseEvent.BUTTON1_DOWN_MASK,
+ mousePosition.x, mousePosition.y,
+ 1,
+ false, //popupTrigger
+ buttonId //button
+ );
+ frame.dispatchEvent( ( AWTEvent )meOld );
+ }
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/CheckGetMaskForButton/CheckGetMaskForButton.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,65 @@
+/*
+ @test %I% %E%
+ @bug 6315717
+ @summary verifies that InputEvent.getMaskForButton() returns the same values as in InputEvent.BUTTON_DOWN_MASK
+ @author Andrei Dmitriev : area=awt.event
+ @run main CheckGetMaskForButton
+*/
+
+import java.awt.*;
+import java.awt.event.InputEvent;
+import java.lang.reflect.*;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+public class CheckGetMaskForButton{
+ static Robot robot;
+
+ public static void main(String []s){
+ System.out.println("Number Of Buttons = "+ MouseInfo.getNumberOfButtons());
+ CheckGetMaskForButton f = new CheckGetMaskForButton();
+ int [] buttonMasksViaAPI = new int[MouseInfo.getNumberOfButtons()];
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ buttonMasksViaAPI[i] = InputEvent.getMaskForButton(i+1);
+ System.out.println("Test (API): "+ buttonMasksViaAPI[i]);
+ }
+
+ //get same array via reflection
+ Object obj = AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ try {
+ Class clazz = Class.forName("java.awt.event.InputEvent");
+ Method method = clazz.getDeclaredMethod("getButtonDownMasks",new Class [] {});
+ if (method != null) {
+ method.setAccessible(true);
+ return method.invoke(null, (Object[])null);
+ }
+ }catch (Exception e){
+ throw new RuntimeException("Test failed. Exception occured:", e);
+ }
+ return null;
+ }
+ });
+
+ if (obj == null){
+ throw new RuntimeException("Test failed. The value obtained via reflection is "+obj);
+ }
+
+ int [] buttonDownMasksViaReflection = new int [Array.getLength(obj)];
+ //check that length of API array greater or equals then Reflect array.
+ if (Array.getLength(obj) < buttonMasksViaAPI.length){
+ throw new RuntimeException("Test failed. The length of API array greater or equals then the length of Reflect array.");
+ }
+
+ //Check that the values obtained via reflection from InputEvent.BUTTON_DOWN_MASK are the
+ // same as for standard API.
+ for (int i = 0; i < MouseInfo.getNumberOfButtons(); i++){
+ System.out.println("Test (Reflection): "+ Array.getInt(obj, i));
+ if (buttonMasksViaAPI[i] != Array.getInt(obj, i)){
+ throw new RuntimeException("Test failed. Values of InputEvent array are different for API and Reflection invocations");
+ }
+ }
+ System.out.println("Test passed.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/Enum/ValueOf.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,224 @@
+/*
+ * Copyright 2004-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.
+ *
+ * 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 4984908 5058132 6653154
+ * @summary Basic test of valueOf(String)
+ * @author Josh Bloch
+ *
+ * @compile ValueOf.java
+ * @run main ValueOf
+ */
+
+import java.util.*;
+import java.lang.reflect.Method;
+
+public class ValueOf {
+ static Random rnd = new Random();
+
+ public static void main(String[] args) throws Exception {
+ test(Silly0.class);
+ test(Silly1.class);
+ test(Silly31.class);
+ test(Silly32.class);
+ test(Silly33.class);
+ test(Silly63.class);
+ test(Silly64.class);
+ test(Silly65.class);
+ test(Silly127.class);
+ test(Silly128.class);
+ test(Silly129.class);
+ test(Silly500.class);
+ test(Specialized.class);
+
+ testMissingException();
+ }
+
+ static <T extends Enum<T>> void test(Class<T> enumClass) throws Exception {
+ Set<T> s = EnumSet.allOf(enumClass);
+ test(enumClass, s);
+
+ // Delete half the elements from set at random
+ for (Iterator<T> i = s.iterator(); i.hasNext(); ) {
+ i.next();
+ if (rnd.nextBoolean())
+ i.remove();
+ }
+
+ test(enumClass, s);
+ }
+
+ static <T extends Enum<T>> void test(Class<T> enumClass, Set<T> s)
+ throws Exception
+ {
+ Method valueOf = enumClass.getDeclaredMethod("valueOf", String.class);
+ Set<T> copy = EnumSet.noneOf(enumClass);
+ for (T e : s)
+ copy.add((T) valueOf.invoke(null, e.name()));
+ if (!copy.equals(s))
+ throw new Exception(copy + " != " + s);
+ }
+
+ static void testMissingException() {
+ try {
+ Enum.valueOf(Specialized.class, "BAZ");
+ throw new RuntimeException("Expected IllegalArgumentException not thrown.");
+ } catch(IllegalArgumentException iae) {
+ String message = iae.getMessage();
+ if (! "No enum constant ValueOf.Specialized.BAZ".equals(message))
+ throw new RuntimeException("Unexpected detail message: ``" + message + "''.");
+ }
+ }
+
+ enum Silly0 { };
+
+ enum Silly1 { e1 }
+
+ enum Silly31 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30
+ }
+
+ enum Silly32 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31
+ }
+
+ enum Silly33 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32
+ }
+
+ enum Silly63 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62
+ }
+
+ enum Silly64 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62, e63
+ }
+
+ enum Silly65 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62, e63, e64
+ }
+
+ enum Silly127 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
+ e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
+ e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
+ e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
+ e118, e119, e120, e121, e122, e123, e124, e125, e126
+ }
+
+ enum Silly128 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
+ e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
+ e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
+ e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
+ e118, e119, e120, e121, e122, e123, e124, e125, e126, e127
+ }
+
+ enum Silly129 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
+ e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
+ e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
+ e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
+ e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, e128
+ }
+
+ enum Silly500 {
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
+ e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
+ e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
+ e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
+ e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
+ e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
+ e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
+ e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
+ e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, e128, e129,
+ e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141,
+ e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153,
+ e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165,
+ e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177,
+ e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189,
+ e190, e191, e192, e193, e194, e195, e196, e197, e198, e199, e200, e201,
+ e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213,
+ e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225,
+ e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237,
+ e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249,
+ e250, e251, e252, e253, e254, e255, e256, e257, e258, e259, e260, e261,
+ e262, e263, e264, e265, e266, e267, e268, e269, e270, e271, e272, e273,
+ e274, e275, e276, e277, e278, e279, e280, e281, e282, e283, e284, e285,
+ e286, e287, e288, e289, e290, e291, e292, e293, e294, e295, e296, e297,
+ e298, e299, e300, e301, e302, e303, e304, e305, e306, e307, e308, e309,
+ e310, e311, e312, e313, e314, e315, e316, e317, e318, e319, e320, e321,
+ e322, e323, e324, e325, e326, e327, e328, e329, e330, e331, e332, e333,
+ e334, e335, e336, e337, e338, e339, e340, e341, e342, e343, e344, e345,
+ e346, e347, e348, e349, e350, e351, e352, e353, e354, e355, e356, e357,
+ e358, e359, e360, e361, e362, e363, e364, e365, e366, e367, e368, e369,
+ e370, e371, e372, e373, e374, e375, e376, e377, e378, e379, e380, e381,
+ e382, e383, e384, e385, e386, e387, e388, e389, e390, e391, e392, e393,
+ e394, e395, e396, e397, e398, e399, e400, e401, e402, e403, e404, e405,
+ e406, e407, e408, e409, e410, e411, e412, e413, e414, e415, e416, e417,
+ e418, e419, e420, e421, e422, e423, e424, e425, e426, e427, e428, e429,
+ e430, e431, e432, e433, e434, e435, e436, e437, e438, e439, e440, e441,
+ e442, e443, e444, e445, e446, e447, e448, e449, e450, e451, e452, e453,
+ e454, e455, e456, e457, e458, e459, e460, e461, e462, e463, e464, e465,
+ e466, e467, e468, e469, e470, e471, e472, e473, e474, e475, e476, e477,
+ e478, e479, e480, e481, e482, e483, e484, e485, e486, e487, e488, e489,
+ e490, e491, e492, e493, e494, e495, e496, e497, e498, e499
+ }
+
+ enum Specialized {
+ FOO {
+ public void foo() {}
+ };
+ abstract public void foo();
+ };
+
+}
--- a/jdk/test/java/lang/reflect/Generics/Probe.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/test/java/lang/reflect/Generics/Probe.java Thu Feb 26 14:25:55 2009 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 5003916
+ * @bug 5003916 6704655
* @summary Testing parsing of signatures attributes of nested classes
* @author Joseph D. Darcy
* @compile -source 1.5 Probe.java
@@ -32,8 +32,10 @@
import java.lang.reflect.*;
import java.lang.annotation.*;
+import java.util.*;
+import static java.util.Arrays.*;
-@Classes({
+@Classes(value={
"java.util.concurrent.FutureTask",
"java.util.concurrent.ConcurrentHashMap$EntryIterator",
"java.util.concurrent.ConcurrentHashMap$KeyIterator",
@@ -56,7 +58,9 @@
"java.util.HashMap$ValueIterator",
"java.util.LinkedHashMap$EntryIterator",
"java.util.LinkedHashMap$KeyIterator",
- "java.util.LinkedHashMap$ValueIterator",
+ "java.util.LinkedHashMap$ValueIterator"
+ },
+ sunClasses={
"javax.crypto.SunJCE_c",
"javax.crypto.SunJCE_e",
"javax.crypto.SunJCE_f",
@@ -66,7 +70,15 @@
})
public class Probe {
public static void main (String[] args) throws Throwable {
- String [] names = (Probe.class).getAnnotation(Classes.class).value();
+ Classes classesAnnotation = (Probe.class).getAnnotation(Classes.class);
+ List<String> names =
+ new ArrayList<String>(asList(classesAnnotation.value()));
+
+ if (System.getProperty("java.runtime.name").startsWith("Java(TM)")) {
+ // Sun production JDK; test crypto classes too
+ for(String name: classesAnnotation.sunClasses())
+ names.add(name);
+ }
int errs = 0;
for(String name: names) {
@@ -140,4 +152,5 @@
@Retention(RetentionPolicy.RUNTIME)
@interface Classes {
String [] value(); // list of classes to probe
+ String [] sunClasses(); // list of Sun-production JDK specific classes to probe
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/CookieHandler/B6791927.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ *
+ * 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 6791927
+ * @summary Wrong Locale in HttpCookie::expiryDate2DeltaSeconds
+ */
+
+import java.net.*;
+import java.util.List;
+import java.util.Locale;
+
+public class B6791927 {
+ public static final void main( String[] aaParamters ) throws Exception{
+ // Forces a non US locale
+ Locale.setDefault(Locale.FRANCE);
+ List<HttpCookie> cookies = HttpCookie.parse("set-cookie: CUSTOMER=WILE_E_COYOTE; expires=Wednesday, 09-Nov-2019 23:12:40 GMT");
+ if (cookies == null || cookies.isEmpty()) {
+ throw new RuntimeException("No cookie found");
+ }
+ for (HttpCookie c : cookies) {
+ if (c.getMaxAge() == 0) {
+ throw new RuntimeException("Expiration date shouldn't be 0");
+ }
+ }
+ }
+}
--- a/jdk/test/java/net/CookieHandler/TestHttpCookie.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/test/java/net/CookieHandler/TestHttpCookie.java Thu Feb 26 14:25:55 2009 -0800
@@ -24,7 +24,7 @@
/**
* @test
* @summary Unit test for java.net.HttpCookie
- * @bug 6244040 6277796 6277801 6277808 6294071 6692802
+ * @bug 6244040 6277796 6277801 6277808 6294071 6692802 6790677
* @author Edward Wang
*/
@@ -278,10 +278,6 @@
.c("this is a coyote").cu("http://www.coyote.org").dsc(true)
.d(".coyote.org").a(3600).port("80");
- // illegal characters in set-cookie header
- test("Set-Cookie2:Customer=;Version#=\"1\";Path=&\"/acme\"")
- .nil();
-
// empty set-cookie string
test("").nil();
@@ -311,6 +307,9 @@
test("Set-Cookie2:C1=\"V1\";Domain=\".sun1.com\";path=\"/www1\";Max-Age=\"100\",C2=\"V2\";Domain=\".sun2.com\";path=\"/www2\";Max-Age=\"200\"")
.n(0, "C1").v(0, "V1").p(0, "/www1").a(0, 100).d(0, ".sun1.com")
.n(1, "C2").v(1, "V2").p(1, "/www2").a(1, 200).d(1, ".sun2.com");
+
+ // Bug 6790677: Should ignore bogus attributes
+ test("Set-Cookie2:C1=\"V1\";foobar").n(0, "C1").v(0, "V1");
}
static void netscape() {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,246 @@
+/*
+ * 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.
+ *
+ * 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 4167874
+ * @library ../../../../com/sun/net/httpserver
+ * @build FileServerHandler
+ * @run shell build.sh
+ * @run main/othervm CloseTest
+ * @summary URL-downloaded jar files can consume all available file descriptors
+ */
+
+import java.io.*;
+import java.net.*;
+import java.lang.reflect.*;
+import java.util.concurrent.*;
+import com.sun.net.httpserver.*;
+
+public class CloseTest {
+
+ static void copyFile (String src, String dst) {
+ copyFile (new File(src), new File(dst));
+ }
+
+ static void copyDir (String src, String dst) {
+ copyDir (new File(src), new File(dst));
+ }
+
+ static void copyFile (File src, File dst) {
+ try {
+ if (!src.isFile()) {
+ throw new RuntimeException ("File not found: " + src.toString());
+ }
+ dst.delete();
+ dst.createNewFile();
+ FileInputStream i = new FileInputStream (src);
+ FileOutputStream o = new FileOutputStream (dst);
+ byte[] buf = new byte [1024];
+ int count;
+ while ((count=i.read(buf)) >= 0) {
+ o.write (buf, 0, count);
+ }
+ i.close();
+ o.close();
+ } catch (IOException e) {
+ throw new RuntimeException (e);
+ }
+ }
+
+ static void rm_minus_rf (File path) {
+ if (!path.exists()) {
+ return;
+ }
+ if (path.isFile()) {
+ if (!path.delete()) {
+ throw new RuntimeException ("Could not delete " + path);
+ }
+ } else if (path.isDirectory ()) {
+ String[] names = path.list();
+ File[] files = path.listFiles();
+ for (int i=0; i<files.length; i++) {
+ rm_minus_rf (new File(path, names[i]));
+ }
+ if (!path.delete()) {
+ throw new RuntimeException ("Could not delete " + path);
+ }
+ } else {
+ throw new RuntimeException ("Trying to delete something that isn't a file or a directory");
+ }
+ }
+
+ static void copyDir (File src, File dst) {
+ if (!src.isDirectory()) {
+ throw new RuntimeException ("Dir not found: " + src.toString());
+ }
+ if (dst.exists()) {
+ throw new RuntimeException ("Dir exists: " + dst.toString());
+ }
+ dst.mkdir();
+ String[] names = src.list();
+ File[] files = src.listFiles();
+ for (int i=0; i<files.length; i++) {
+ String f = names[i];
+ if (files[i].isDirectory()) {
+ copyDir (files[i], new File (dst, f));
+ } else {
+ copyFile (new File (src, f), new File (dst, f));
+ }
+ assert false;
+ }
+ }
+
+ /* expect is true if you expect to find it, false if you expect not to */
+ static Class loadClass (String name, URLClassLoader loader, boolean expect){
+ try {
+ Class clazz = Class.forName (name, true, loader);
+ if (!expect) {
+ throw new RuntimeException ("loadClass: "+name+" unexpected");
+ }
+ return clazz;
+ } catch (ClassNotFoundException e) {
+ if (expect) {
+ throw new RuntimeException ("loadClass: " +name + " not found");
+ }
+ }
+ return null;
+ }
+
+//
+// needs two jar files test1.jar and test2.jar with following structure
+//
+// com/foo/TestClass
+// com/foo/TestClass1
+// com/foo/Resource1
+// com/foo/Resource2
+//
+// and a directory hierarchy with the same structure/contents
+
+ public static void main (String args[]) throws Exception {
+
+ String workdir = System.getProperty("test.classes");
+ if (workdir == null) {
+ workdir = args[0];
+ }
+ if (!workdir.endsWith("/")) {
+ workdir = workdir+"/";
+ }
+
+ startHttpServer (workdir+"serverRoot/");
+
+ String testjar = workdir + "test.jar";
+ copyFile (workdir+"test1.jar", testjar);
+ test (testjar, 1);
+
+ // repeat test with different implementation
+ // of test.jar (whose TestClass.getValue() returns 2
+
+ copyFile (workdir+"test2.jar", testjar);
+ test (testjar, 2);
+
+ // repeat test using a directory of files
+ String testdir=workdir+"testdir/";
+ rm_minus_rf (new File(testdir));
+ copyDir (workdir+"test1/", testdir);
+ test (testdir, 1);
+
+ testdir=workdir+"testdir/";
+ rm_minus_rf (new File(testdir));
+ copyDir (workdir+"test2/", testdir);
+ test (testdir, 2);
+ getHttpServer().stop (3);
+ }
+
+ // create a loader on jarfile (or directory), plus a http loader
+ // load a class , then look for a resource
+ // also load a class from http loader
+ // then close the loader
+ // check further new classes/resources cannot be loaded
+ // check jar (or dir) can be deleted
+ // check existing classes can be loaded
+ // check boot classes can be loaded
+
+ static void test (String name, int expectedValue) throws Exception {
+ URL url = new URL ("file", null, name);
+ URL url2 = getServerURL();
+ System.out.println ("Doing tests with URL: " + url + " and " + url2);
+ URL[] urls = new URL[2];
+ urls[0] = url;
+ urls[1] = url2;
+ URLClassLoader loader = new URLClassLoader (urls);
+ Class testclass = loadClass ("com.foo.TestClass", loader, true);
+ Class class2 = loadClass ("Test", loader, true); // from http
+ class2.newInstance();
+ Object test = testclass.newInstance();
+ Method method = testclass.getDeclaredMethods()[0]; // int getValue();
+ int res = (Integer) method.invoke (test);
+
+ if (res != expectedValue) {
+ throw new RuntimeException ("wrong value from getValue() ["+res+
+ "/"+expectedValue+"]");
+ }
+
+ // should find /resource1
+ URL u1 = loader.findResource ("com/foo/Resource1");
+ if (u1 == null) {
+ throw new RuntimeException ("can't find com/foo/Resource1 in test1.jar");
+ }
+ loader.close ();
+
+ // should NOT find /resource2 even though it is in jar
+ URL u2 = loader.findResource ("com/foo/Resource2");
+ if (u2 != null) {
+ throw new RuntimeException ("com/foo/Resource2 unexpected in test1.jar");
+ }
+
+ // load tests
+ loadClass ("com.foo.TestClass1", loader, false);
+ loadClass ("com.foo.TestClass", loader, true);
+ loadClass ("java.awt.Button", loader, true);
+
+ // now check we can delete the path
+ rm_minus_rf (new File(name));
+ System.out.println (" ... OK");
+ }
+
+ static HttpServer httpServer;
+
+ static HttpServer getHttpServer() {
+ return httpServer;
+ }
+
+ static URL getServerURL () throws Exception {
+ int port = httpServer.getAddress().getPort();
+ String s = "http://127.0.0.1:"+port+"/";
+ return new URL(s);
+ }
+
+ static void startHttpServer (String docroot) throws Exception {
+ httpServer = HttpServer.create (new InetSocketAddress(0), 10);
+ HttpContext ctx = httpServer.createContext (
+ "/", new FileServerHandler(docroot)
+ );
+ httpServer.start();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/README Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,24 @@
+test1 and test2 contain two different implementations of the same
+classes. They are compiled and placed into two different target directories
+and two jar files test1.jar and test2.jar.
+
+The same class is in both jars/directories, but returns a different result
+from the TestClass.getValue() method. The test does the following
+
+1. copy test1.jar to a working directory and call it test.jar
+
+2. load class and invoke method (checking result)
+
+3. close the loader
+
+4. delete test.jar (check delete succeeds)
+
+5. copy test2.jar to same dir and repeat the test
+
+6. The two tests are then repeated by copying the directories
+ test1 and test2.
+
+The loader also includes a http:// URL in its search path and a http
+server is used to serve the required class.
+
+serverRoot is used as the root directory for the http server.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/build.sh Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,73 @@
+#!/bin/sh
+#
+# 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.
+#
+# 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.
+#
+#
+#
+# This script builds the test files for the test
+# but not the actual test sources themselves.
+#
+if [ "${TESTSRC}" = "" ]
+then
+ echo "TESTSRC not set. Test cannot execute. Failed."
+ exit 1
+fi
+echo "TESTSRC=${TESTSRC}"
+
+if [ "${TESTJAVA}" = "" ]
+then
+ echo "TESTJAVA not set. Test cannot execute. Failed."
+ exit 1
+fi
+echo "TESTJAVA=${TESTJAVA}"
+
+if [ "${TESTCLASSES}" = "" ]
+then
+ echo "TESTCLASSES not set. Test cannot execute. Failed."
+ exit 1
+fi
+
+JAVAC="${TESTJAVA}/bin/javac"
+JAR="${TESTJAVA}/bin/jar"
+
+rm -rf ${TESTCLASSES}/test1
+rm -rf ${TESTCLASSES}/test2
+rm -rf ${TESTCLASSES}/serverRoot
+mkdir -p ${TESTCLASSES}/test1/com/foo
+mkdir -p ${TESTCLASSES}/test2/com/foo
+mkdir -p ${TESTCLASSES}/serverRoot
+
+cd ${TESTSRC}/test1/com/foo
+cp * ${TESTCLASSES}/test1/com/foo
+cd ${TESTCLASSES}/test1
+${JAVAC} com/foo/*.java
+${JAR} cvf ../test1.jar com/foo/*.class com/foo/Resource*
+
+cd ${TESTSRC}/test2/com/foo
+cp * ${TESTCLASSES}/test2/com/foo
+cd ${TESTCLASSES}/test2
+${JAVAC} com/foo/*.java
+${JAR} cvf ../test2.jar com/foo/*.class com/foo/Resource*
+
+cp ${TESTSRC}/serverRoot/Test.java ${TESTCLASSES}/serverRoot
+cd ${TESTCLASSES}/serverRoot
+${JAVAC} Test.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/serverRoot/Test.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ *
+ * 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.
+ */
+
+public class Test {
+ public Test () {
+ System.out.println ("Test created");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test1/com/foo/Resource1 Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,1 @@
+Hello World
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test1/com/foo/Resource2 Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,1 @@
+Hello World Again
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test1/com/foo/TestClass.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ *
+ * 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 com.foo;
+
+public class TestClass {
+ public int getValue () {
+ return 1;
+ }
+}
+
+/*
+public class TestClass {
+ public int getValue () {
+ return 2;
+ }
+}
+*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test1/com/foo/TestClass1.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ *
+ * 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 com.foo;
+
+public class TestClass1 {}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test2/com/foo/Resource1 Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,1 @@
+Hello World
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test2/com/foo/Resource2 Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,1 @@
+Hello World Again
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test2/com/foo/TestClass.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ *
+ * 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 com.foo;
+
+/*
+public class TestClass {
+ public int getValue () {
+ return 1;
+ }
+}
+*/
+
+public class TestClass {
+ public int getValue () {
+ return 2;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLClassLoader/closetest/test2/com/foo/TestClass1.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ *
+ * 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 com.foo;
+
+public class TestClass1 {}
--- a/jdk/test/sun/security/krb5/DnsFallback.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/test/sun/security/krb5/DnsFallback.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2008-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
@@ -23,7 +23,8 @@
/*
* @test
* @bug 6673164
- * @summary dns_fallback parse error
+ * @bug 6552334
+ * @summary fix dns_fallback parse error, and use dns by default
*/
import sun.security.krb5.*;
@@ -31,6 +32,8 @@
public class DnsFallback {
public static void main(String[] args) throws Exception {
+
+ // for 6673164
check("true", "true", true);
check("false", "true", false);
check("true", "false", true);
@@ -39,6 +42,9 @@
check("false", null, false);
check(null, "true", true);
check(null, "false", false);
+
+ // for 6552334
+ check(null, null, true);
}
static void check(String realm, String fallback, boolean output) throws Exception {
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java Sun Feb 22 17:21:13 2009 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java Thu Feb 26 14:25:55 2009 -0800
@@ -136,6 +136,7 @@
server.getLocalPort(), "/");
HttpURLConnection uc = (HttpURLConnection)url.openConnection();
System.out.println(uc.getResponseCode());
+ uc.disconnect();
} catch (IOException e) {
e.printStackTrace();
} finally {
--- a/langtools/.hgtags Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/.hgtags Thu Feb 26 14:25:55 2009 -0800
@@ -20,3 +20,5 @@
e2f8f6daee9decd5721d598dacf4d0b5915651df jdk7-b43
28f0b10d6c1afc106465c13b8c663a6afa4fb1a1 jdk7-b44
30db5e0aaf83fe262d9a7227d3fc3e451cd5d459 jdk7-b45
+be546a6c08e3c31fba2edcae1de43ae3515d2e59 jdk7-b46
+2b8f6bab23926aa32b9cf7e4c540b9d1ce74b7d5 jdk7-b47
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Thu Feb 26 14:25:55 2009 -0800
@@ -709,12 +709,31 @@
case UNDETVAR:
if (s.tag == WILDCARD) {
UndetVar undetvar = (UndetVar)t;
- undetvar.inst = glb(upperBound(s), undetvar.inst);
- // We should check instantiated type against any of the
- // undetvar's lower bounds.
- for (Type t2 : undetvar.lobounds) {
- if (!isSubtype(t2, undetvar.inst))
- return false;
+ WildcardType wt = (WildcardType)s;
+ switch(wt.kind) {
+ case UNBOUND: //similar to ? extends Object
+ case EXTENDS: {
+ Type bound = upperBound(s);
+ // We should check the new upper bound against any of the
+ // undetvar's lower bounds.
+ for (Type t2 : undetvar.lobounds) {
+ if (!isSubtype(t2, bound))
+ return false;
+ }
+ undetvar.hibounds = undetvar.hibounds.prepend(bound);
+ break;
+ }
+ case SUPER: {
+ Type bound = lowerBound(s);
+ // We should check the new lower bound against any of the
+ // undetvar's lower bounds.
+ for (Type t2 : undetvar.hibounds) {
+ if (!isSubtype(bound, t2))
+ return false;
+ }
+ undetvar.lobounds = undetvar.lobounds.prepend(bound);
+ break;
+ }
}
return true;
} else {
@@ -930,12 +949,16 @@
}
if (t.isCompound()) {
+ Warner oldWarner = warnStack.head;
+ warnStack.head = Warner.noWarnings;
if (!visit(supertype(t), s))
return false;
for (Type intf : interfaces(t)) {
if (!visit(intf, s))
return false;
}
+ if (warnStack.head.unchecked == true)
+ oldWarner.warnUnchecked();
return true;
}
@@ -2108,9 +2131,6 @@
List<Type> to) {
if (tvars.isEmpty())
return tvars;
- if (tvars.tail.isEmpty())
- // fast common case
- return List.<Type>of(substBound((TypeVar)tvars.head, from, to));
ListBuffer<Type> newBoundsBuf = lb();
boolean changed = false;
// calculate new bounds
@@ -2150,8 +2170,14 @@
Type bound1 = subst(t.bound, from, to);
if (bound1 == t.bound)
return t;
- else
- return new TypeVar(t.tsym, bound1, syms.botType);
+ else {
+ // create new type variable without bounds
+ TypeVar tv = new TypeVar(t.tsym, null, syms.botType);
+ // the new bound should use the new type variable in place
+ // of the old
+ tv.bound = subst(bound1, List.<Type>of(t), List.<Type>of(tv));
+ return tv;
+ }
}
// </editor-fold>
@@ -2825,6 +2851,16 @@
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="Greatest lower bound">
+ public Type glb(List<Type> ts) {
+ Type t1 = ts.head;
+ for (Type t2 : ts.tail) {
+ if (t1.isErroneous())
+ return t1;
+ t1 = glb(t1, t2);
+ }
+ return t1;
+ }
+ //where
public Type glb(Type t, Type s) {
if (s == null)
return t;
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java Thu Feb 26 14:25:55 2009 -0800
@@ -154,33 +154,15 @@
that.inst = syms.objectType;
else if (that.hibounds.tail.isEmpty())
that.inst = that.hibounds.head;
- else {
- for (List<Type> bs = that.hibounds;
- bs.nonEmpty() && that.inst == null;
- bs = bs.tail) {
- // System.out.println("hibounds = " + that.hibounds);//DEBUG
- if (isSubClass(bs.head, that.hibounds))
- that.inst = types.fromUnknownFun.apply(bs.head);
- }
- if (that.inst == null) {
- int classCount = 0, interfaceCount = 0;
- for (Type t : that.hibounds) {
- if (t.tag == CLASS) {
- if (t.isInterface())
- interfaceCount++;
- else
- classCount++;
- }
- }
- if ((that.hibounds.size() == classCount + interfaceCount) && classCount == 1)
- that.inst = types.makeCompoundType(that.hibounds);
- }
- if (that.inst == null || !types.isSubtypeUnchecked(that.inst, that.hibounds, warn))
- throw ambiguousNoInstanceException
- .setMessage("no.unique.maximal.instance.exists",
- that.qtype, that.hibounds);
- }
+ else
+ that.inst = types.glb(that.hibounds);
}
+ if (that.inst == null ||
+ that.inst.isErroneous() ||
+ !types.isSubtypeUnchecked(that.inst, that.hibounds, warn))
+ throw ambiguousNoInstanceException
+ .setMessage("no.unique.maximal.instance.exists",
+ that.qtype, that.hibounds);
}
//where
private boolean isSubClass(Type t, final List<Type> ts) {
--- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Thu Feb 26 14:25:55 2009 -0800
@@ -371,6 +371,7 @@
context.get(DiagnosticListener.class) != null;
devVerbose = options.get("dev") != null;
processPcks = options.get("process.packages") != null;
+ werror = options.get("-Werror") != null;
verboseCompilePolicy = options.get("verboseCompilePolicy") != null;
@@ -434,6 +435,10 @@
*/
protected boolean processPcks;
+ /** Switch: treat warnings as errors
+ */
+ protected boolean werror;
+
/** Switch: is annotation processing requested explitly via
* CompilationTask.setProcessors?
*/
@@ -490,7 +495,11 @@
public int errorCount() {
if (delegateCompiler != null && delegateCompiler != this)
return delegateCompiler.errorCount();
- else
+ else {
+ if (werror && log.nerrors == 0 && log.nwarnings > 0) {
+ log.error("warnings.and.werror");
+ }
+ }
return log.nerrors;
}
--- a/langtools/src/share/classes/com/sun/tools/javac/main/Main.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/Main.java Thu Feb 26 14:25:55 2009 -0800
@@ -406,8 +406,7 @@
}
}
- if (comp.errorCount() != 0 ||
- options.get("-Werror") != null && comp.warningCount() != 0)
+ if (comp.errorCount() != 0)
return EXIT_ERROR;
} catch (IOException ex) {
ioMessage(ex);
--- a/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java Thu Feb 26 14:25:55 2009 -0800
@@ -449,7 +449,7 @@
},
// treat warnings as errors
- new HiddenOption(WERROR),
+ new Option(WERROR, "opt.Werror"),
// use complex inference from context in the position of a method call argument
new HiddenOption(COMPLEXINFERENCE),
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties Thu Feb 26 14:25:55 2009 -0800
@@ -346,6 +346,9 @@
compiler.err.pkg.clashes.with.class.of.same.name=\
package {0} clashes with class of same name
+compiler.err.warnings.and.werror=\
+ warnings found and -Werror specified
+
# Errors related to annotation processing
compiler.err.proc.cant.access=\
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/javac.properties Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/javac.properties Thu Feb 26 14:25:55 2009 -0800
@@ -69,6 +69,8 @@
Generate class files for specific VM version
javac.opt.source=\
Provide source compatibility with specified release
+javac.opt.Werror=\
+ Terminate compilation if warnings occur
javac.opt.A=\
Options to pass to annotation processors
javac.opt.implicit=\
--- a/langtools/src/share/classes/com/sun/tools/javadoc/DocletInvoker.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/DocletInvoker.java Thu Feb 26 14:25:55 2009 -0800
@@ -83,7 +83,7 @@
cpString = appendPath(docletPath, cpString);
URL[] urls = pathToURLs(cpString);
if (docletParentClassLoader == null)
- appClassLoader = new URLClassLoader(urls);
+ appClassLoader = new URLClassLoader(urls, getDelegationClassLoader(docletClassName));
else
appClassLoader = new URLClassLoader(urls, docletParentClassLoader);
@@ -98,6 +98,57 @@
docletClass = dc;
}
+ /*
+ * Returns the delegation class loader to use when creating
+ * appClassLoader (used to load the doclet). The context class
+ * loader is the best choice, but legacy behavior was to use the
+ * default delegation class loader (aka system class loader).
+ *
+ * Here we favor using the context class loader. To ensure
+ * compatibility with existing apps, we revert to legacy
+ * behavior if either or both of the following conditions hold:
+ *
+ * 1) the doclet is loadable from the system class loader but not
+ * from the context class loader,
+ *
+ * 2) this.getClass() is loadable from the system class loader but not
+ * from the context class loader.
+ */
+ private ClassLoader getDelegationClassLoader(String docletClassName) {
+ ClassLoader ctxCL = Thread.currentThread().getContextClassLoader();
+ ClassLoader sysCL = ClassLoader.getSystemClassLoader();
+ if (sysCL == null)
+ return ctxCL;
+ if (ctxCL == null)
+ return sysCL;
+
+ // Condition 1.
+ try {
+ sysCL.loadClass(docletClassName);
+ try {
+ ctxCL.loadClass(docletClassName);
+ } catch (ClassNotFoundException e) {
+ return sysCL;
+ }
+ } catch (ClassNotFoundException e) {
+ }
+
+ // Condition 2.
+ try {
+ if (getClass() == sysCL.loadClass(getClass().getName())) {
+ try {
+ if (getClass() != ctxCL.loadClass(getClass().getName()))
+ return sysCL;
+ } catch (ClassNotFoundException e) {
+ return sysCL;
+ }
+ }
+ } catch (ClassNotFoundException e) {
+ }
+
+ return ctxCL;
+ }
+
/**
* Generate documentation here. Return true on success.
*/
@@ -231,6 +282,8 @@
docletClassName, methodName);
throw new DocletInvokeException();
}
+ ClassLoader savedCCL =
+ Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(appClassLoader);
return meth.invoke(null , params);
@@ -256,6 +309,8 @@
exc.getTargetException().printStackTrace();
}
throw new DocletInvokeException();
+ } finally {
+ Thread.currentThread().setContextClassLoader(savedCCL);
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/javax/lang/model/UnknownEntityException.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,57 @@
+/*
+ * 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 javax.lang.model;
+
+/**
+ * Superclass of exceptions which indicate that an unknown kind of
+ * entity was encountered. This situation can occur if the language
+ * evolves and new kinds of constructs are introduced. Subclasses of
+ * this exception may be thrown by visitors to indicate that the
+ * visitor was created for a prior version of the language.
+ *
+ * <p>A common superclass for those exceptions allows a single catch
+ * block to have code handling them uniformly.
+ *
+ * @author Joseph D. Darcy
+ * @see javax.lang.model.element.UnknownElementException
+ * @see javax.lang.model.element.UnknownAnnotationValueException
+ * @see javax.lang.model.type.UnknownTypeException
+ * @since 1.7
+ */
+public class UnknownEntityException extends RuntimeException {
+
+ private static final long serialVersionUID = 269L;
+
+ /**
+ * Creates a new {@code UnknownEntityException} with the specified
+ * detail message.
+ *
+ * @param message the detail message
+ */
+ protected UnknownEntityException(String message) {
+ super(message);
+ }
+}
--- a/langtools/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-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
@@ -25,6 +25,8 @@
package javax.lang.model.element;
+import javax.lang.model.UnknownEntityException;
+
/**
* Indicates that an unknown kind of annotation value was encountered.
* This can occur if the language evolves and new kinds of annotation
@@ -39,7 +41,7 @@
* @see AnnotationValueVisitor#visitUnknown
* @since 1.6
*/
-public class UnknownAnnotationValueException extends RuntimeException {
+public class UnknownAnnotationValueException extends UnknownEntityException {
private static final long serialVersionUID = 269L;
--- a/langtools/src/share/classes/javax/lang/model/element/UnknownElementException.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/javax/lang/model/element/UnknownElementException.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-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
@@ -25,6 +25,8 @@
package javax.lang.model.element;
+import javax.lang.model.UnknownEntityException;
+
/**
* Indicates that an unknown kind of element was encountered. This
* can occur if the language evolves and new kinds of elements are
@@ -38,7 +40,7 @@
* @see ElementVisitor#visitUnknown
* @since 1.6
*/
-public class UnknownElementException extends RuntimeException {
+public class UnknownElementException extends UnknownEntityException {
private static final long serialVersionUID = 269L;
--- a/langtools/src/share/classes/javax/lang/model/type/UnknownTypeException.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/src/share/classes/javax/lang/model/type/UnknownTypeException.java Thu Feb 26 14:25:55 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2005-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
@@ -25,6 +25,8 @@
package javax.lang.model.type;
+import javax.lang.model.UnknownEntityException;
+
/**
* Indicates that an unknown kind of type was encountered. This can
* occur if the language evolves and new kinds of types are added to
@@ -38,7 +40,7 @@
* @see TypeVisitor#visitUnknown
* @since 1.6
*/
-public class UnknownTypeException extends RuntimeException {
+public class UnknownTypeException extends UnknownEntityException {
private static final long serialVersionUID = 269L;
--- a/langtools/test/tools/javac/6304921/T6304921.out Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/test/tools/javac/6304921/T6304921.out Thu Feb 26 14:25:55 2009 -0800
@@ -7,12 +7,7 @@
required: java.util.List<java.lang.Integer>
List<Integer> list = new ArrayList();
^
-T6304921.java:445/445/453: warning: [fallthrough] possible fall-through into case
- default:
- ^
-T6304921.java:522/613/614: warning: [finally] finally clause cannot complete normally
- }
- ^
+error: warnings found and -Werror specified
T6304921.java:727/733/737: cannot find symbol
symbol : variable orr
location: class java.lang.System
@@ -21,5 +16,5 @@
T6304921.java:812/816/822: operator + cannot be applied to int,boolean
return 123 + true; // bad binary expression
^
-2 errors
-4 warnings
+3 errors
+2 warnings
--- a/langtools/test/tools/javac/6758789/T6758789b.out Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/test/tools/javac/6758789/T6758789b.out Thu Feb 26 14:25:55 2009 -0800
@@ -1,3 +1,5 @@
T6758789b.java:39:11: compiler.warn.prob.found.req: (- compiler.misc.unchecked.assign), T6758789a.Foo, T6758789a.Foo<X>
T6758789b.java:39:10: compiler.warn.unchecked.meth.invocation.applied: kindname.method, m, T6758789a.Foo<X>, T6758789a.Foo, kindname.class, T6758789a
+- compiler.err.warnings.and.werror
+1 error
2 warnings
--- a/langtools/test/tools/javac/T6241723.out Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/test/tools/javac/T6241723.out Thu Feb 26 14:25:55 2009 -0800
@@ -2,4 +2,6 @@
T6241723.java:23:7: compiler.warn.has.been.deprecated: A2.A21, A2
T6241723.java:26:5: compiler.warn.has.been.deprecated: Z1, unnamed package
T6241723.java:28:7: compiler.warn.has.been.deprecated: Z2.Z21, Z2
+- compiler.err.warnings.and.werror
+1 error
4 warnings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/T6595666.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ *
+ * 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 6595666
+ * @summary fix -Werror
+ */
+
+import java.io.*;
+import java.util.*;
+
+public class T6595666 {
+ void m() {
+ // the following line must create warnings with -Xlint, because of unchecked conversion
+ List<Integer> list = new ArrayList();
+ }
+
+ public static void main(String... args) throws Exception {
+ File testSrc = new File(System.getProperty("test.src", "."));
+
+ String basename = T6595666.class.getName();
+ File srcFile = new File(testSrc, basename+".java");
+ File classFile = new File(basename+".class");
+ classFile.delete();
+ if (classFile.exists())
+ throw new Exception("setup error, can't delete " + classFile);
+
+ compile(1, "-d", ".", "-Xlint", "-Werror", srcFile.getPath());
+ if (classFile.exists())
+ throw new Exception("failed: found " + classFile);
+
+ compile(0, "-d", ".", "-Xlint", srcFile.getPath());
+ if (!classFile.exists())
+ throw new Exception("failed: " + classFile + " not found");
+ }
+
+ private static void compile(int rc, String... args) throws Exception {
+ System.err.println("compile: " + Arrays.asList(args));
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ int rc2 = com.sun.tools.javac.Main.compile(args, pw);
+ pw.close();
+ System.err.println(sw);
+ if (rc != rc2)
+ throw new Exception("bad exit code; expected " + rc + ", found " + rc2);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/cast/6557182/T6557182.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ *
+ * 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
+ * @author Maurizio Cimadamore
+ * @bug 6557182
+ * @summary Unchecked warning *and* inconvertible types
+ * @compile/fail/ref=T6557182.out -XDrawDiagnostics -Xlint:unchecked T6557182.java
+ */
+
+class T6557182 {
+
+ <T extends Number & Comparable<String>> void test1(T t) {
+ Comparable<Integer> ci = (Comparable<Integer>) t;
+ }
+
+ <T extends Number & Comparable<? extends Number>> void test2(T t) {
+ Comparable<Integer> ci = (Comparable<Integer>) t;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/cast/6557182/T6557182.out Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,4 @@
+T6557182.java:35:56: compiler.err.prob.found.req: (- compiler.misc.inconvertible.types), T, java.lang.Comparable<java.lang.Integer>
+T6557182.java:39:56: compiler.warn.prob.found.req: (- compiler.misc.unchecked.cast.to.type), T, java.lang.Comparable<java.lang.Integer>
+1 error
+1 warning
--- a/langtools/test/tools/javac/depDocComment/DeprecatedDocComment.out Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/test/tools/javac/depDocComment/DeprecatedDocComment.out Thu Feb 26 14:25:55 2009 -0800
@@ -1,4 +1,6 @@
DeprecatedDocComment.java:27:28: compiler.warn.has.been.deprecated: deprecatedTest1(), DeprecatedDocComment2
DeprecatedDocComment.java:31:28: compiler.warn.has.been.deprecated: deprecatedTest5(), DeprecatedDocComment2
DeprecatedDocComment.java:32:28: compiler.warn.has.been.deprecated: deprecatedTest6(), DeprecatedDocComment2
+- compiler.err.warnings.and.werror
+1 error
3 warnings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/6729401/T6729401.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,46 @@
+/*
+ * 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 6729401
+ *
+ * @summary Compiler error when using F-bounded generics with free type variables
+ * @author Maurizio Cimadamore
+ * @compile T6729401.java
+ *
+ */
+
+class T6729401 {
+
+ interface I<U,W> {
+ <T extends I<U,T>> void m(I<U,T> x);
+ }
+
+ <X extends I<Object,X>,Y extends I<Object,Y>> void test(I<Object,X> x, I<Object,Y> y) {
+ x.<Y>m(y);
+ x.m(y);
+ y.<X>m(x);
+ y.m(x);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/inference/6315770/T6315770.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ *
+ * 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 6315770
+ * @summary javac inference allows creation of strange types: Integer & Runnable
+ * @author Maurizio Cimadamore
+ *
+ * @compile/fail/ref=T6315770.out T6315770.java -XDrawDiagnostics
+ */
+
+class T6315770<V> {
+ <T extends Integer & Runnable> T6315770<T> m() {
+ return null;
+ }
+ void test() {
+ T6315770<?> c1 = m();
+ T6315770<? extends String> c2 = m();
+ T6315770<? super String> c3 = m();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/generics/inference/6315770/T6315770.out Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,3 @@
+T6315770.java:39:42: compiler.err.undetermined.type.1: <T>T6315770<T>, (- compiler.misc.no.unique.maximal.instance.exists: T, java.lang.String,java.lang.Integer,java.lang.Runnable)
+T6315770.java:40:40: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T6315770<T>, T6315770<? super java.lang.String>)), <T>T6315770<T>, T6315770<? super java.lang.String>
+2 errors
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/model/TestExceptions.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ *
+ * 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 6794071
+ * @summary Test that exceptions have a proper parent class
+ * @author Joseph D. Darcy
+ */
+
+import javax.lang.model.UnknownEntityException;
+import javax.lang.model.element.*;
+import javax.lang.model.type.*;
+
+/*
+ * Verify UnknownFooExceptions can be caught with a common parent
+ * exception.
+ */
+public class TestExceptions {
+ public static void main(String... args) {
+ RuntimeException[] exceptions = {
+ new UnknownElementException((Element)null, (Object)null),
+ new UnknownAnnotationValueException((AnnotationValue) null, (Object) null),
+ new UnknownTypeException((TypeMirror)null, (Object)null)
+ };
+
+ for(RuntimeException exception : exceptions) {
+ try {
+ throw exception;
+ } catch (UnknownEntityException uee) {
+ ;
+ }
+ }
+ }
+}
--- a/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java Sun Feb 22 17:21:13 2009 -0800
+++ b/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java Thu Feb 26 14:25:55 2009 -0800
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 6374357 6308351
+ * @bug 6374357 6308351 6707027
* @summary PackageElement.getEnclosedElements() throws ClassReader$BadClassFileException
* @author Peter von der Ah\u00e9
* @run main/othervm -Xmx256m Main
@@ -118,7 +118,7 @@
packages.size(), classes, nestedClasses);
if (classes < 9000)
throw new AssertionError("Too few classes in PLATFORM_CLASS_PATH ;-)");
- if (packages.size() < 545)
+ if (packages.size() < 530)
throw new AssertionError("Too few packages in PLATFORM_CLASS_PATH ;-)");
if (nestedClasses < 3000)
throw new AssertionError("Too few nested classes in PLATFORM_CLASS_PATH ;-)");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javadoc/6176978/T6176978.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,80 @@
+/*
+ * 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 6176978
+ * @summary current Javadoc's invocation and extension (Doclet) mechanisms are problematic
+ * @build T6176978
+ * @run main T6176978
+ */
+
+import java.io.*;
+import java.net.*;
+
+public class T6176978
+{
+ public static void main(String[] args) throws Exception {
+ // create and use a temp dir that will not be on jtreg's
+ // default class path
+ File tmpDir = new File("tmp");
+ tmpDir.mkdirs();
+
+ File testSrc = new File(System.getProperty("test.src", "."));
+ String[] javac_args = {
+ "-d",
+ "tmp",
+ new File(testSrc, "X.java").getPath()
+ };
+
+ int rc = com.sun.tools.javac.Main.compile(javac_args);
+ if (rc != 0)
+ throw new Error("javac exit code: " + rc);
+
+ String[] jdoc_args = {
+ "-doclet",
+ "X",
+ new File(testSrc, "T6176978.java").getPath()
+ };
+
+ rc = com.sun.tools.javadoc.Main.execute(jdoc_args);
+ if (rc == 0)
+ throw new Error("javadoc unexpectedly succeeded");
+
+
+
+ Thread currThread = Thread.currentThread();
+ ClassLoader saveClassLoader = currThread.getContextClassLoader();
+ URLClassLoader urlCL = new URLClassLoader(new URL[] { tmpDir.toURL() });
+ currThread.setContextClassLoader(urlCL);
+
+ try {
+ rc = com.sun.tools.javadoc.Main.execute(jdoc_args);
+ if (rc != 0)
+ throw new Error("javadoc exit: " + rc);
+ }
+ finally {
+ currThread.setContextClassLoader(saveClassLoader);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javadoc/6176978/X.java Thu Feb 26 14:25:55 2009 -0800
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+import com.sun.javadoc.*;
+
+public class X {
+ public static boolean start(RootDoc root) {
+ System.out.println("X.start");
+ return true;
+ }
+}