--- a/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
5843778bda89b1d5ac8e1aa05e26930ac90b3145 jdk7-b44
54dffad0bf066791a2793305875250c395011d5f jdk7-b45
04b2620edc72de93671646e4720c5992c74ac8b5 jdk7-b46
+0c4657194eec95c08ba478aee9cfc3c295e41657 jdk7-b47
+1bf51a4c2627c2f0e0cbcc2cf0421bdb37f1f2b2 jdk7-b48
--- a/.hgtags-top-repo Fri Feb 20 13:05:28 2009 +0800
+++ b/.hgtags-top-repo Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
a395e3aac4744cc9033fcd819fad1239a45add52 jdk7-b44
99846f001ca214015578d593802d26e27246a802 jdk7-b45
e8a2a4d187773a62f3309b0fa265c13425bc2258 jdk7-b46
+d7744e86dedc21a8ecf6bdb73eb191b8eaf5b0da jdk7-b47
+4ae9f4bfdb98f65bd957e3fe72471b320150b38e jdk7-b48
--- a/corba/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/corba/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
9803dac7254041b30ca65e3852d4c566b9757c3b jdk7-b44
68814aa5b44b1f16931a97e7cd4028c70eb9586b jdk7-b45
1691dbfc08f8ee3f4e23a1ff30cdff920718696c jdk7-b46
+167ad0164301f318b069a947e1c9c07ed667748a jdk7-b47
+0be222241fd405e48915647facfaa176621b39b9 jdk7-b48
--- a/hotspot/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
809e899c638bd9b21836abf9d09ab2a30ff3900b jdk7-b44
945bf754069766e76873c53102fae48abf04cf5b jdk7-b45
16bb38eeda35b46268eefa4c1f829eb086e0ca46 jdk7-b46
+fcb923bad68e2b10380a030ea83a723f4dc3d4d6 jdk7-b47
+bcb33806d186561c781992e5f4d8a90bb033f9f0 jdk7-b48
--- a/hotspot/make/hotspot_version Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/make/hotspot_version Fri Feb 20 10:53:39 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
--- a/hotspot/src/cpu/sparc/vm/sparc.ad Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad Fri Feb 20 10:53:39 2009 -0800
@@ -762,7 +762,7 @@
case Assembler::stdf_op3: st_op = Op_StoreD; break;
case Assembler::ldsb_op3: ld_op = Op_LoadB; break;
- case Assembler::lduh_op3: ld_op = Op_LoadC; break;
+ case Assembler::lduh_op3: ld_op = Op_LoadUS; break;
case Assembler::ldsh_op3: ld_op = Op_LoadS; break;
case Assembler::ldx_op3: // may become LoadP or stay LoadI
case Assembler::ldsw_op3: // may become LoadP or stay LoadI
@@ -3869,6 +3869,8 @@
constraint(ALLOC_IN_RC(dflt_reg));
match(RegD);
+ match(regD_low);
+
format %{ %}
interface(REG_INTER);
%}
@@ -3883,7 +3885,7 @@
operand regD_low() %{
constraint(ALLOC_IN_RC(dflt_low_reg));
- match(RegD);
+ match(regD);
format %{ %}
interface(REG_INTER);
@@ -5314,9 +5316,9 @@
ins_pipe(iload_mask_mem);
%}
-// Load Char (16bit UNsigned) into a Long Register
-instruct loadUCL(iRegL dst, memory mem, immL_FFFF bytemask) %{
- match(Set dst (AndL (ConvI2L (LoadC mem)) bytemask));
+// Load Unsigned Short/Char (16bit UNsigned) into a Long Register
+instruct loadUS2L(iRegL dst, memory mem, immL_FFFF bytemask) %{
+ match(Set dst (AndL (ConvI2L (LoadUS mem)) bytemask));
ins_cost(MEMORY_REF_COST);
size(4);
@@ -5326,9 +5328,9 @@
ins_pipe(iload_mask_mem);
%}
-// Load Char (16bit unsigned)
-instruct loadC(iRegI dst, memory mem) %{
- match(Set dst (LoadC mem));
+// Load Unsigned Short/Char (16bit unsigned)
+instruct loadUS(iRegI dst, memory mem) %{
+ match(Set dst (LoadUS mem));
ins_cost(MEMORY_REF_COST);
size(4);
--- a/hotspot/src/cpu/x86/vm/x86_32.ad Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad Fri Feb 20 10:53:39 2009 -0800
@@ -6413,9 +6413,9 @@
ins_pipe( ialu_reg_mem );
%}
-// Load Char (16bit unsigned)
-instruct loadC(eRegI dst, memory mem) %{
- match(Set dst (LoadC mem));
+// Load Unsigned Short/Char (16bit unsigned)
+instruct loadUS(eRegI dst, memory mem) %{
+ match(Set dst (LoadUS mem));
ins_cost(125);
format %{ "MOVZX $dst,$mem" %}
--- a/hotspot/src/cpu/x86/vm/x86_64.ad Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad Fri Feb 20 10:53:39 2009 -0800
@@ -6096,25 +6096,25 @@
// ins_pipe(ialu_reg_mem);
// %}
-// Load Char (16 bit UNsigned)
-instruct loadC(rRegI dst, memory mem)
-%{
- match(Set dst (LoadC mem));
+// Load Unsigned Short/Char (16 bit UNsigned)
+instruct loadUS(rRegI dst, memory mem)
+%{
+ match(Set dst (LoadUS mem));
ins_cost(125);
- format %{ "movzwl $dst, $mem\t# char" %}
+ format %{ "movzwl $dst, $mem\t# ushort/char" %}
opcode(0x0F, 0xB7);
ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
ins_pipe(ialu_reg_mem);
%}
-// Load Char (16 bit UNsigned) into long
-// instruct loadC2L(rRegL dst, memory mem)
+// Load Unsigned Short/Char (16 bit UNsigned) into long
+// instruct loadUS2L(rRegL dst, memory mem)
// %{
-// match(Set dst (ConvI2L (LoadC mem)));
+// match(Set dst (ConvI2L (LoadUS mem)));
// ins_cost(125);
-// format %{ "movzwl $dst, $mem\t# char -> long" %}
+// format %{ "movzwl $dst, $mem\t# ushort/char -> long" %}
// opcode(0x0F, 0xB7);
// ins_encode(REX_reg_mem(dst, mem), OpcP, OpcS, reg_mem(dst, mem));
// ins_pipe(ialu_reg_mem);
@@ -9490,14 +9490,14 @@
%{
match(Set dst (AndL dst src));
- format %{ "movzbq $dst, $src\t# long & 0xFF" %}
+ format %{ "movzbq $dst, $dst\t# long & 0xFF" %}
opcode(0x0F, 0xB6);
ins_encode(REX_reg_reg_wide(dst, dst), OpcP, OpcS, reg_reg(dst, dst));
ins_pipe(ialu_reg);
%}
// And Register with Immediate 65535
-instruct andL_rReg_imm65535(rRegI dst, immL_65535 src)
+instruct andL_rReg_imm65535(rRegL dst, immL_65535 src)
%{
match(Set dst (AndL dst src));
--- a/hotspot/src/os/linux/vm/os_linux.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/os/linux/vm/os_linux.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -1432,6 +1432,10 @@
return buf;
}
+struct tm* os::localtime_pd(const time_t* clock, struct tm* res) {
+ return localtime_r(clock, res);
+}
+
////////////////////////////////////////////////////////////////////////////////
// runtime exit support
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -323,6 +323,10 @@
return (size_t)(base - bottom);
}
+struct tm* os::localtime_pd(const time_t* clock, struct tm* res) {
+ return localtime_r(clock, res);
+}
+
// interruptible infrastructure
// setup_interruptible saves the thread state before going into an
--- a/hotspot/src/os/windows/vm/os_windows.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/os/windows/vm/os_windows.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -327,6 +327,14 @@
return sz;
}
+struct tm* os::localtime_pd(const time_t* clock, struct tm* res) {
+ const struct tm* time_struct_ptr = localtime(clock);
+ if (time_struct_ptr != NULL) {
+ *res = *time_struct_ptr;
+ return res;
+ }
+ return NULL;
+}
LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo);
--- a/hotspot/src/share/vm/adlc/dict2.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/adlc/dict2.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -316,9 +316,12 @@
return strcmp((const char *)k1,(const char *)k2);
}
-// Slimey cheap key comparator.
+// Cheap key comparator.
int cmpkey(const void *key1, const void *key2) {
- return (int)((intptr_t)key1 - (intptr_t)key2);
+ if (key1 == key2) return 0;
+ intptr_t delta = (intptr_t)key1 - (intptr_t)key2;
+ if (delta > 0) return 1;
+ return -1;
}
//=============================================================================
--- a/hotspot/src/share/vm/adlc/forms.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/adlc/forms.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -248,7 +248,7 @@
// True if 'opType', an ideal name, loads or stores.
Form::DataType Form::is_load_from_memory(const char *opType) const {
if( strcmp(opType,"LoadB")==0 ) return Form::idealB;
- if( strcmp(opType,"LoadC")==0 ) return Form::idealC;
+ if( strcmp(opType,"LoadUS")==0 ) return Form::idealC;
if( strcmp(opType,"LoadD")==0 ) return Form::idealD;
if( strcmp(opType,"LoadD_unaligned")==0 ) return Form::idealD;
if( strcmp(opType,"LoadF")==0 ) return Form::idealF;
--- a/hotspot/src/share/vm/adlc/formssel.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/adlc/formssel.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -3314,7 +3314,7 @@
"StoreI","StoreL","StoreP","StoreN","StoreD","StoreF" ,
"StoreB","StoreC","Store" ,"StoreFP",
"LoadI" ,"LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF" ,
- "LoadB" ,"LoadC" ,"LoadS" ,"Load" ,
+ "LoadB" ,"LoadUS" ,"LoadS" ,"Load" ,
"Store4I","Store2I","Store2L","Store2D","Store4F","Store2F","Store16B",
"Store8B","Store4B","Store8C","Store4C","Store2C",
"Load4I" ,"Load2I" ,"Load2L" ,"Load2D" ,"Load4F" ,"Load2F" ,"Load16B" ,
--- a/hotspot/src/share/vm/asm/codeBuffer.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/asm/codeBuffer.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -123,6 +123,10 @@
// addresses constructed before expansions will not be confused.
cb->free_blob();
}
+
+ // free any overflow storage
+ delete _overflow_arena;
+
#ifdef ASSERT
Copy::fill_to_bytes(this, sizeof(*this), badResourceValue);
#endif
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -846,6 +846,12 @@
Handle protection_domain,
TRAPS) {
+ // UseNewReflection
+ // The result of this call should be consistent with the result
+ // of the call to resolve_instance_class_or_null().
+ // See evaluation 6790209 and 4474172 for more details.
+ class_loader = Handle(THREAD, java_lang_ClassLoader::non_reflection_class_loader(class_loader()));
+
unsigned int d_hash = dictionary()->compute_hash(class_name, class_loader);
int d_index = dictionary()->hash_to_index(d_hash);
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -24,7 +24,7 @@
// We need to sort heap regions by collection desirability.
-class CSetChooserCache {
+class CSetChooserCache VALUE_OBJ_CLASS_SPEC {
private:
enum {
CacheLength = 16
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -33,7 +33,7 @@
PYA_cancel // It's been completed by somebody else: cancel.
};
-class ConcurrentG1Refine {
+class ConcurrentG1Refine: public CHeapObj {
ConcurrentG1RefineThread* _cg1rThread;
volatile jint _pya;
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -30,7 +30,7 @@
// A generic CM bit map. This is essentially a wrapper around the BitMap
// class, with one bit per (1<<_shifter) HeapWords.
-class CMBitMapRO {
+class CMBitMapRO VALUE_OBJ_CLASS_SPEC {
protected:
HeapWord* _bmStartWord; // base address of range covered by map
size_t _bmWordSize; // map size (in #HeapWords covered)
@@ -139,7 +139,7 @@
// Represents a marking stack used by the CM collector.
// Ideally this should be GrowableArray<> just like MSC's marking stack(s).
-class CMMarkStack {
+class CMMarkStack VALUE_OBJ_CLASS_SPEC {
ConcurrentMark* _cm;
oop* _base; // bottom of stack
jint _index; // one more than last occupied index
@@ -237,7 +237,7 @@
void oops_do(OopClosure* f);
};
-class CMRegionStack {
+class CMRegionStack VALUE_OBJ_CLASS_SPEC {
MemRegion* _base;
jint _capacity;
jint _index;
@@ -312,7 +312,7 @@
class ConcurrentMarkThread;
-class ConcurrentMark {
+class ConcurrentMark: public CHeapObj {
friend class ConcurrentMarkThread;
friend class CMTask;
friend class CMBitMapClosure;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -141,7 +141,7 @@
_scan_only_head(NULL), _scan_only_tail(NULL), _curr_scan_only(NULL),
_length(0), _scan_only_length(0),
_last_sampled_rs_lengths(0),
- _survivor_head(NULL), _survivors_tail(NULL), _survivor_length(0)
+ _survivor_head(NULL), _survivor_tail(NULL), _survivor_length(0)
{
guarantee( check_list_empty(false), "just making sure..." );
}
@@ -159,16 +159,15 @@
}
void YoungList::add_survivor_region(HeapRegion* hr) {
- assert(!hr->is_survivor(), "should not already be for survived");
+ assert(hr->is_survivor(), "should be flagged as survivor region");
assert(hr->get_next_young_region() == NULL, "cause it should!");
hr->set_next_young_region(_survivor_head);
if (_survivor_head == NULL) {
- _survivors_tail = hr;
+ _survivor_tail = hr;
}
_survivor_head = hr;
- hr->set_survivor();
++_survivor_length;
}
@@ -239,7 +238,7 @@
empty_list(_survivor_head);
_survivor_head = NULL;
- _survivors_tail = NULL;
+ _survivor_tail = NULL;
_survivor_length = 0;
_last_sampled_rs_lengths = 0;
@@ -391,6 +390,7 @@
// Add survivor regions to SurvRateGroup.
_g1h->g1_policy()->note_start_adding_survivor_regions();
+ _g1h->g1_policy()->finished_recalculating_age_indexes(true /* is_survivors */);
for (HeapRegion* curr = _survivor_head;
curr != NULL;
curr = curr->get_next_young_region()) {
@@ -401,7 +401,7 @@
if (_survivor_head != NULL) {
_head = _survivor_head;
_length = _survivor_length + _scan_only_length;
- _survivors_tail->set_next_young_region(_scan_only_head);
+ _survivor_tail->set_next_young_region(_scan_only_head);
} else {
_head = _scan_only_head;
_length = _scan_only_length;
@@ -418,9 +418,9 @@
_curr_scan_only = NULL;
_survivor_head = NULL;
- _survivors_tail = NULL;
+ _survivor_tail = NULL;
_survivor_length = 0;
- _g1h->g1_policy()->finished_recalculating_age_indexes();
+ _g1h->g1_policy()->finished_recalculating_age_indexes(false /* is_survivors */);
assert(check_list_well_formed(), "young list should be well formed");
}
@@ -553,7 +553,7 @@
if (_gc_alloc_region_counts[purpose] < g1_policy()->max_regions(purpose)) {
alloc_region = newAllocRegion_work(word_size, true, zero_filled);
if (purpose == GCAllocForSurvived && alloc_region != NULL) {
- _young_list->add_survivor_region(alloc_region);
+ alloc_region->set_survivor();
}
++_gc_alloc_region_counts[purpose];
} else {
@@ -949,6 +949,10 @@
GCOverheadReporter::recordSTWEnd(end);
g1_policy()->record_full_collection_end();
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
+
gc_epilogue(true);
// Abandon concurrent refinement. This must happen last: in the
@@ -2593,6 +2597,9 @@
_young_list->print();
#endif // SCAN_ONLY_VERBOSE
+ g1_policy()->record_survivor_regions(_young_list->survivor_length(),
+ _young_list->first_survivor_region(),
+ _young_list->last_survivor_region());
_young_list->reset_auxilary_lists();
}
} else {
@@ -2619,7 +2626,9 @@
#endif // SCAN_ONLY_VERBOSE
double end_time_sec = os::elapsedTime();
- g1_policy()->record_pause_time((end_time_sec - start_time_sec)*1000.0);
+ if (!evacuation_failed()) {
+ g1_policy()->record_pause_time((end_time_sec - start_time_sec)*1000.0);
+ }
GCOverheadReporter::recordSTWEnd(end_time_sec);
g1_policy()->record_collection_pause_end(popular_region != NULL,
abandoned);
@@ -2642,8 +2651,13 @@
}
}
- if (mark_in_progress())
+ if (mark_in_progress()) {
concurrent_mark()->update_g1_committed();
+ }
+
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
gc_epilogue(false);
}
@@ -2754,6 +2768,13 @@
_gc_alloc_region_list = r->next_gc_alloc_region();
r->set_next_gc_alloc_region(NULL);
r->set_is_gc_alloc_region(false);
+ if (r->is_survivor()) {
+ if (r->is_empty()) {
+ r->set_not_young();
+ } else {
+ _young_list->add_survivor_region(r);
+ }
+ }
if (r->is_empty()) {
++_free_regions;
}
@@ -3150,6 +3171,20 @@
return block;
}
+void G1CollectedHeap::retire_alloc_region(HeapRegion* alloc_region,
+ bool par) {
+ // Another thread might have obtained alloc_region for the given
+ // purpose, and might be attempting to allocate in it, and might
+ // succeed. Therefore, we can't do the "finalization" stuff on the
+ // region below until we're sure the last allocation has happened.
+ // We ensure this by allocating the remaining space with a garbage
+ // object.
+ if (par) par_allocate_remaining_space(alloc_region);
+ // Now we can do the post-GC stuff on the region.
+ alloc_region->note_end_of_copying();
+ g1_policy()->record_after_bytes(alloc_region->used());
+}
+
HeapWord*
G1CollectedHeap::allocate_during_gc_slow(GCAllocPurpose purpose,
HeapRegion* alloc_region,
@@ -3167,16 +3202,7 @@
// Otherwise, continue; this new region is empty, too.
}
assert(alloc_region != NULL, "We better have an allocation region");
- // Another thread might have obtained alloc_region for the given
- // purpose, and might be attempting to allocate in it, and might
- // succeed. Therefore, we can't do the "finalization" stuff on the
- // region below until we're sure the last allocation has happened.
- // We ensure this by allocating the remaining space with a garbage
- // object.
- if (par) par_allocate_remaining_space(alloc_region);
- // Now we can do the post-GC stuff on the region.
- alloc_region->note_end_of_copying();
- g1_policy()->record_after_bytes(alloc_region->used());
+ retire_alloc_region(alloc_region, par);
if (_gc_alloc_region_counts[purpose] >= g1_policy()->max_regions(purpose)) {
// Cannot allocate more regions for the given purpose.
@@ -3185,7 +3211,7 @@
if (purpose != alt_purpose) {
HeapRegion* alt_region = _gc_alloc_regions[alt_purpose];
// Has not the alternative region been aliased?
- if (alloc_region != alt_region) {
+ if (alloc_region != alt_region && alt_region != NULL) {
// Try to allocate in the alternative region.
if (par) {
block = alt_region->par_allocate(word_size);
@@ -3194,9 +3220,10 @@
}
// Make an alias.
_gc_alloc_regions[purpose] = _gc_alloc_regions[alt_purpose];
- }
- if (block != NULL) {
- return block;
+ if (block != NULL) {
+ return block;
+ }
+ retire_alloc_region(alt_region, par);
}
// Both the allocation region and the alternative one are full
// and aliased, replace them with a new allocation region.
@@ -3497,6 +3524,7 @@
OverflowQueue* _overflowed_refs;
G1ParGCAllocBuffer _alloc_buffers[GCAllocPurposeCount];
+ ageTable _age_table;
size_t _alloc_buffer_waste;
size_t _undo_waste;
@@ -3538,6 +3566,7 @@
_refs(g1h->task_queue(queue_num)),
_hash_seed(17), _queue_num(queue_num),
_term_attempts(0),
+ _age_table(false),
#if G1_DETAILED_STATS
_pushes(0), _pops(0), _steals(0),
_steal_attempts(0), _overflow_pushes(0),
@@ -3572,8 +3601,9 @@
RefToScanQueue* refs() { return _refs; }
OverflowQueue* overflowed_refs() { return _overflowed_refs; }
-
- inline G1ParGCAllocBuffer* alloc_buffer(GCAllocPurpose purpose) {
+ ageTable* age_table() { return &_age_table; }
+
+ G1ParGCAllocBuffer* alloc_buffer(GCAllocPurpose purpose) {
return &_alloc_buffers[purpose];
}
@@ -3834,7 +3864,9 @@
(!from_region->is_young() && young_index == 0), "invariant" );
G1CollectorPolicy* g1p = _g1->g1_policy();
markOop m = old->mark();
- GCAllocPurpose alloc_purpose = g1p->evacuation_destination(from_region, m->age(),
+ int age = m->has_displaced_mark_helper() ? m->displaced_mark_helper()->age()
+ : m->age();
+ GCAllocPurpose alloc_purpose = g1p->evacuation_destination(from_region, age,
word_sz);
HeapWord* obj_ptr = _par_scan_state->allocate(alloc_purpose, word_sz);
oop obj = oop(obj_ptr);
@@ -3872,9 +3904,12 @@
obj->incr_age();
} else {
m = m->incr_age();
+ obj->set_mark(m);
}
+ _par_scan_state->age_table()->add(obj, word_sz);
+ } else {
+ obj->set_mark(m);
}
- obj->set_mark(m);
// preserve "next" mark bit
if (_g1->mark_in_progress() && !_g1->is_obj_ill(old)) {
@@ -4129,6 +4164,9 @@
_g1h->g1_policy()->record_obj_copy_time(i, elapsed_ms-term_ms);
_g1h->g1_policy()->record_termination_time(i, term_ms);
}
+ if (G1UseSurvivorSpace) {
+ _g1h->g1_policy()->record_thread_age_table(pss.age_table());
+ }
_g1h->update_surviving_young_words(pss.surviving_young_words()+1);
// Clean up any par-expanded rem sets.
@@ -4368,7 +4406,7 @@
// Is this the right thing to do here? We don't save marks
// on individual heap regions when we allocate from
// them in parallel, so this seems like the correct place for this.
- all_alloc_regions_note_end_of_copying();
+ retire_all_alloc_regions();
{
G1IsAliveClosure is_alive(this);
G1KeepAliveClosure keep_alive(this);
@@ -5008,7 +5046,7 @@
return no_allocs;
}
-void G1CollectedHeap::all_alloc_regions_note_end_of_copying() {
+void G1CollectedHeap::retire_all_alloc_regions() {
for (int ap = 0; ap < GCAllocPurposeCount; ++ap) {
HeapRegion* r = _gc_alloc_regions[ap];
if (r != NULL) {
@@ -5021,8 +5059,7 @@
}
}
if (!has_processed_alias) {
- r->note_end_of_copying();
- g1_policy()->record_after_bytes(r->used());
+ retire_alloc_region(r, false /* par */);
}
}
}
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -90,7 +90,7 @@
HeapRegion* _curr_scan_only;
HeapRegion* _survivor_head;
- HeapRegion* _survivors_tail;
+ HeapRegion* _survivor_tail;
size_t _survivor_length;
void empty_list(HeapRegion* list);
@@ -105,6 +105,7 @@
bool is_empty() { return _length == 0; }
size_t length() { return _length; }
size_t scan_only_length() { return _scan_only_length; }
+ size_t survivor_length() { return _survivor_length; }
void rs_length_sampling_init();
bool rs_length_sampling_more();
@@ -120,6 +121,7 @@
HeapRegion* first_region() { return _head; }
HeapRegion* first_scan_only_region() { return _scan_only_head; }
HeapRegion* first_survivor_region() { return _survivor_head; }
+ HeapRegion* last_survivor_region() { return _survivor_tail; }
HeapRegion* par_get_next_scan_only_region() {
MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag);
HeapRegion* ret = _curr_scan_only;
@@ -219,7 +221,7 @@
// The to-space memory regions into which objects are being copied during
// a GC.
HeapRegion* _gc_alloc_regions[GCAllocPurposeCount];
- uint _gc_alloc_region_counts[GCAllocPurposeCount];
+ size_t _gc_alloc_region_counts[GCAllocPurposeCount];
// A list of the regions that have been set to be alloc regions in the
// current collection.
@@ -281,8 +283,8 @@
// Returns "true" iff none of the gc alloc regions have any allocations
// since the last call to "save_marks".
bool all_alloc_regions_no_allocs_since_save_marks();
- // Calls "note_end_of_copying on all gc alloc_regions.
- void all_alloc_regions_note_end_of_copying();
+ // Perform finalization stuff on all allocation regions.
+ void retire_all_alloc_regions();
// The number of regions allocated to hold humongous objects.
int _num_humongous_regions;
@@ -351,6 +353,10 @@
// that parallel threads might be attempting allocations.
void par_allocate_remaining_space(HeapRegion* r);
+ // Retires an allocation region when it is full or at the end of a
+ // GC pause.
+ void retire_alloc_region(HeapRegion* alloc_region, bool par);
+
// Helper function for two callbacks below.
// "full", if true, indicates that the GC is for a System.gc() request,
// and should collect the entire heap. If "clear_all_soft_refs" is true,
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -196,8 +196,13 @@
_short_lived_surv_rate_group(new SurvRateGroup(this, "Short Lived",
G1YoungSurvRateNumRegionsSummary)),
_survivor_surv_rate_group(new SurvRateGroup(this, "Survivor",
- G1YoungSurvRateNumRegionsSummary))
+ G1YoungSurvRateNumRegionsSummary)),
// add here any more surv rate groups
+ _recorded_survivor_regions(0),
+ _recorded_survivor_head(NULL),
+ _recorded_survivor_tail(NULL),
+ _survivors_age_table(true)
+
{
_recent_prev_end_times_for_all_gcs_sec->add(os::elapsedTime());
_prev_collection_pause_end_ms = os::elapsedTime() * 1000.0;
@@ -272,6 +277,15 @@
_concurrent_mark_cleanup_times_ms->add(0.20);
_tenuring_threshold = MaxTenuringThreshold;
+ if (G1UseSurvivorSpace) {
+ // if G1FixedSurvivorSpaceSize is 0 which means the size is not
+ // fixed, then _max_survivor_regions will be calculated at
+ // calculate_young_list_target_config during initialization
+ _max_survivor_regions = G1FixedSurvivorSpaceSize / HeapRegion::GrainBytes;
+ } else {
+ _max_survivor_regions = 0;
+ }
+
initialize_all();
}
@@ -283,6 +297,9 @@
void G1CollectorPolicy::initialize_flags() {
set_min_alignment(HeapRegion::GrainBytes);
set_max_alignment(GenRemSet::max_alignment_constraint(rem_set_name()));
+ if (SurvivorRatio < 1) {
+ vm_exit_during_initialization("Invalid survivor ratio specified");
+ }
CollectorPolicy::initialize_flags();
}
@@ -301,6 +318,8 @@
"-XX:+UseConcMarkSweepGC.");
}
+ initialize_gc_policy_counters();
+
if (G1Gen) {
_in_young_gc_mode = true;
@@ -322,6 +341,12 @@
}
}
+// Create the jstat counters for the policy.
+void G1CollectorPolicy::initialize_gc_policy_counters()
+{
+ _gc_policy_counters = new GCPolicyCounters("GarbageFirst", 1, 2 + G1Gen);
+}
+
void G1CollectorPolicy::calculate_young_list_min_length() {
_young_list_min_length = 0;
@@ -352,6 +377,7 @@
guarantee( so_length < _young_list_target_length, "invariant" );
_young_list_so_prefix_length = so_length;
}
+ calculate_survivors_policy();
}
// This method calculate the optimal scan-only set for a fixed young
@@ -448,6 +474,9 @@
if (full_young_gcs() && _free_regions_at_end_of_collection > 0) {
// we are in fully-young mode and there are free regions in the heap
+ double survivor_regions_evac_time =
+ predict_survivor_regions_evac_time();
+
size_t min_so_length = 0;
size_t max_so_length = 0;
@@ -497,9 +526,8 @@
scanned_cards = predict_non_young_card_num(adj_rs_lengths);
// calculate this once, so that we don't have to recalculate it in
// the innermost loop
- double base_time_ms = predict_base_elapsed_time_ms(pending_cards,
- scanned_cards);
-
+ double base_time_ms = predict_base_elapsed_time_ms(pending_cards, scanned_cards)
+ + survivor_regions_evac_time;
// the result
size_t final_young_length = 0;
size_t final_so_length = 0;
@@ -548,14 +576,14 @@
bool done = false;
// this is the outermost loop
while (!done) {
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
// leave this in for debugging, just in case
gclog_or_tty->print_cr("searching between " SIZE_FORMAT " and " SIZE_FORMAT
", incr " SIZE_FORMAT ", pass %s",
from_so_length, to_so_length, so_length_incr,
(pass == pass_type_coarse) ? "coarse" :
(pass == pass_type_fine) ? "fine" : "final");
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
size_t so_length = from_so_length;
size_t init_free_regions =
@@ -651,11 +679,11 @@
guarantee( so_length_incr == so_coarse_increments, "invariant" );
guarantee( final_so_length >= min_so_length, "invariant" );
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
// leave this in for debugging, just in case
gclog_or_tty->print_cr(" coarse pass: SO length " SIZE_FORMAT,
final_so_length);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
from_so_length =
(final_so_length - min_so_length > so_coarse_increments) ?
@@ -687,12 +715,12 @@
// of the optimal
size_t new_so_length = 950 * final_so_length / 1000;
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
// leave this in for debugging, just in case
gclog_or_tty->print_cr(" fine pass: SO length " SIZE_FORMAT
", setting it to " SIZE_FORMAT,
final_so_length, new_so_length);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
from_so_length = new_so_length;
to_so_length = new_so_length;
@@ -719,7 +747,8 @@
}
// we should have at least one region in the target young length
- _young_list_target_length = MAX2((size_t) 1, final_young_length);
+ _young_list_target_length =
+ MAX2((size_t) 1, final_young_length + _recorded_survivor_regions);
if (final_so_length >= final_young_length)
// and we need to ensure that the S-O length is not greater than
// the target young length (this is being a bit careful)
@@ -734,7 +763,7 @@
double end_time_sec = os::elapsedTime();
double elapsed_time_ms = (end_time_sec - start_time_sec) * 1000.0;
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
// leave this in for debugging, just in case
gclog_or_tty->print_cr("target = %1.1lf ms, young = " SIZE_FORMAT
", SO = " SIZE_FORMAT ", "
@@ -747,9 +776,9 @@
calculations,
full_young_gcs() ? "full" : "partial",
should_initiate_conc_mark() ? " i-m" : "",
- in_marking_window(),
- in_marking_window_im());
-#endif // 0
+ _in_marking_window,
+ _in_marking_window_im);
+#endif // TRACE_CALC_YOUNG_CONFIG
if (_young_list_target_length < _young_list_min_length) {
// bummer; this means that, if we do a pause when the optimal
@@ -768,14 +797,14 @@
// S-O length
so_length = calculate_optimal_so_length(_young_list_min_length);
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
// leave this in for debugging, just in case
gclog_or_tty->print_cr("adjusted target length from "
SIZE_FORMAT " to " SIZE_FORMAT
", SO " SIZE_FORMAT,
_young_list_target_length, _young_list_min_length,
so_length);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
_young_list_target_length =
MAX2(_young_list_min_length, (size_t)1);
@@ -785,12 +814,12 @@
// we are in a partially-young mode or we've run out of regions (due
// to evacuation failure)
-#if 0
+#ifdef TRACE_CALC_YOUNG_CONFIG
// leave this in for debugging, just in case
gclog_or_tty->print_cr("(partial) setting target to " SIZE_FORMAT
", SO " SIZE_FORMAT,
_young_list_min_length, 0);
-#endif // 0
+#endif // TRACE_CALC_YOUNG_CONFIG
// we'll do the pause as soon as possible and with no S-O prefix
// (see above for the reasons behind the latter)
@@ -884,6 +913,16 @@
return true;
}
+double G1CollectorPolicy::predict_survivor_regions_evac_time() {
+ double survivor_regions_evac_time = 0.0;
+ for (HeapRegion * r = _recorded_survivor_head;
+ r != NULL && r != _recorded_survivor_tail->get_next_young_region();
+ r = r->get_next_young_region()) {
+ survivor_regions_evac_time += predict_region_elapsed_time_ms(r, true);
+ }
+ return survivor_regions_evac_time;
+}
+
void G1CollectorPolicy::check_prediction_validity() {
guarantee( adaptive_young_list_length(), "should not call this otherwise" );
@@ -995,11 +1034,15 @@
_short_lived_surv_rate_group->start_adding_regions();
// also call this on any additional surv rate groups
+ record_survivor_regions(0, NULL, NULL);
+
_prev_region_num_young = _region_num_young;
_prev_region_num_tenured = _region_num_tenured;
_free_regions_at_end_of_collection = _g1->free_regions();
_scan_only_regions_at_end_of_collection = 0;
+ // Reset survivors SurvRateGroup.
+ _survivor_surv_rate_group->reset();
calculate_young_list_min_length();
calculate_young_list_target_config();
}
@@ -1104,6 +1147,10 @@
_short_lived_surv_rate_group->record_scan_only_prefix(short_lived_so_length);
tag_scan_only(short_lived_so_length);
+ if (G1UseSurvivorSpace) {
+ _survivors_age_table.clear();
+ }
+
assert( verify_young_ages(), "region age verification" );
}
@@ -1965,9 +2012,6 @@
// </NEW PREDICTION>
_target_pause_time_ms = -1.0;
-
- // TODO: calculate tenuring threshold
- _tenuring_threshold = MaxTenuringThreshold;
}
// <NEW PREDICTION>
@@ -2058,7 +2102,7 @@
guarantee( hr->is_young() && hr->age_in_surv_rate_group() != -1,
"invariant" );
int age = hr->age_in_surv_rate_group();
- double yg_surv_rate = predict_yg_surv_rate(age);
+ double yg_surv_rate = predict_yg_surv_rate(age, hr->surv_rate_group());
bytes_to_copy = (size_t) ((double) hr->used() * yg_surv_rate);
}
@@ -2091,7 +2135,7 @@
}
#if PREDICTIONS_VERBOSE
if (young) {
- _recorded_young_bytes += hr->asSpace()->used();
+ _recorded_young_bytes += hr->used();
} else {
_recorded_marked_bytes += hr->max_live_bytes();
}
@@ -2119,11 +2163,6 @@
predict_non_young_card_num(_predicted_rs_lengths);
_recorded_region_num = _recorded_young_regions + _recorded_non_young_regions;
- _predicted_young_survival_ratio = 0.0;
- for (int i = 0; i < _recorded_young_regions; ++i)
- _predicted_young_survival_ratio += predict_yg_surv_rate(i);
- _predicted_young_survival_ratio /= (double) _recorded_young_regions;
-
_predicted_scan_only_scan_time_ms =
predict_scan_only_time_ms(_recorded_scan_only_regions);
_predicted_rs_update_time_ms =
@@ -2673,8 +2712,11 @@
assert(in_young_gc_mode(), "should be in young GC mode");
bool ret;
size_t young_list_length = _g1->young_list_length();
-
- if (young_list_length < _young_list_target_length) {
+ size_t young_list_max_length = _young_list_target_length;
+ if (G1FixedEdenSize) {
+ young_list_max_length -= _max_survivor_regions;
+ }
+ if (young_list_length < young_list_max_length) {
ret = true;
++_region_num_young;
} else {
@@ -2710,17 +2752,39 @@
}
-uint G1CollectorPolicy::max_regions(int purpose) {
+size_t G1CollectorPolicy::max_regions(int purpose) {
switch (purpose) {
case GCAllocForSurvived:
- return G1MaxSurvivorRegions;
+ return _max_survivor_regions;
case GCAllocForTenured:
- return UINT_MAX;
+ return REGIONS_UNLIMITED;
default:
- return UINT_MAX;
+ ShouldNotReachHere();
+ return REGIONS_UNLIMITED;
};
}
+// Calculates survivor space parameters.
+void G1CollectorPolicy::calculate_survivors_policy()
+{
+ if (!G1UseSurvivorSpace) {
+ return;
+ }
+ if (G1FixedSurvivorSpaceSize == 0) {
+ _max_survivor_regions = _young_list_target_length / SurvivorRatio;
+ } else {
+ _max_survivor_regions = G1FixedSurvivorSpaceSize / HeapRegion::GrainBytes;
+ }
+
+ if (G1FixedTenuringThreshold) {
+ _tenuring_threshold = MaxTenuringThreshold;
+ } else {
+ _tenuring_threshold = _survivors_age_table.compute_tenuring_threshold(
+ HeapRegion::GrainWords * _max_survivor_regions);
+ }
+}
+
+
void
G1CollectorPolicy_BestRegionsFirst::
set_single_region_collection_set(HeapRegion* hr) {
@@ -2743,7 +2807,11 @@
double max_pause_time_ms = _mmu_tracker->max_gc_time() * 1000.0;
size_t young_list_length = _g1->young_list_length();
- bool reached_target_length = young_list_length >= _young_list_target_length;
+ size_t young_list_max_length = _young_list_target_length;
+ if (G1FixedEdenSize) {
+ young_list_max_length -= _max_survivor_regions;
+ }
+ bool reached_target_length = young_list_length >= young_list_max_length;
if (in_young_gc_mode()) {
if (reached_target_length) {
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -49,7 +49,7 @@
class MainBodySummary;
class PopPreambleSummary;
-class PauseSummary {
+class PauseSummary: public CHeapObj {
define_num_seq(total)
define_num_seq(other)
@@ -58,7 +58,7 @@
virtual PopPreambleSummary* pop_preamble_summary() { return NULL; }
};
-class MainBodySummary {
+class MainBodySummary: public CHeapObj {
define_num_seq(satb_drain) // optional
define_num_seq(parallel) // parallel only
define_num_seq(ext_root_scan)
@@ -75,7 +75,7 @@
define_num_seq(clear_ct) // parallel only
};
-class PopPreambleSummary {
+class PopPreambleSummary: public CHeapObj {
define_num_seq(pop_preamble)
define_num_seq(pop_update_rs)
define_num_seq(pop_scan_rs)
@@ -557,6 +557,8 @@
return get_new_neg_prediction(_young_gc_eff_seq);
}
+ double predict_survivor_regions_evac_time();
+
// </NEW PREDICTION>
public:
@@ -599,8 +601,8 @@
// Returns an estimate of the survival rate of the region at yg-age
// "yg_age".
- double predict_yg_surv_rate(int age) {
- TruncatedSeq* seq = _short_lived_surv_rate_group->get_seq(age);
+ double predict_yg_surv_rate(int age, SurvRateGroup* surv_rate_group) {
+ TruncatedSeq* seq = surv_rate_group->get_seq(age);
if (seq->num() == 0)
gclog_or_tty->print("BARF! age is %d", age);
guarantee( seq->num() > 0, "invariant" );
@@ -610,6 +612,10 @@
return pred;
}
+ double predict_yg_surv_rate(int age) {
+ return predict_yg_surv_rate(age, _short_lived_surv_rate_group);
+ }
+
double accum_yg_surv_rate_pred(int age) {
return _short_lived_surv_rate_group->accum_surv_rate_pred(age);
}
@@ -822,6 +828,9 @@
virtual void init();
+ // Create jstat counters for the policy.
+ virtual void initialize_gc_policy_counters();
+
virtual HeapWord* mem_allocate_work(size_t size,
bool is_tlab,
bool* gc_overhead_limit_was_exceeded);
@@ -1047,8 +1056,12 @@
// Print stats on young survival ratio
void print_yg_surv_rate_info() const;
- void finished_recalculating_age_indexes() {
- _short_lived_surv_rate_group->finished_recalculating_age_indexes();
+ void finished_recalculating_age_indexes(bool is_survivors) {
+ if (is_survivors) {
+ _survivor_surv_rate_group->finished_recalculating_age_indexes();
+ } else {
+ _short_lived_surv_rate_group->finished_recalculating_age_indexes();
+ }
// do that for any other surv rate groups
}
@@ -1097,6 +1110,17 @@
// maximum amount of suvivors regions.
int _tenuring_threshold;
+ // The limit on the number of regions allocated for survivors.
+ size_t _max_survivor_regions;
+
+ // The amount of survor regions after a collection.
+ size_t _recorded_survivor_regions;
+ // List of survivor regions.
+ HeapRegion* _recorded_survivor_head;
+ HeapRegion* _recorded_survivor_tail;
+
+ ageTable _survivors_age_table;
+
public:
inline GCAllocPurpose
@@ -1116,7 +1140,9 @@
return GCAllocForTenured;
}
- uint max_regions(int purpose);
+ static const size_t REGIONS_UNLIMITED = ~(size_t)0;
+
+ size_t max_regions(int purpose);
// The limit on regions for a particular purpose is reached.
void note_alloc_region_limit_reached(int purpose) {
@@ -1132,6 +1158,23 @@
void note_stop_adding_survivor_regions() {
_survivor_surv_rate_group->stop_adding_regions();
}
+
+ void record_survivor_regions(size_t regions,
+ HeapRegion* head,
+ HeapRegion* tail) {
+ _recorded_survivor_regions = regions;
+ _recorded_survivor_head = head;
+ _recorded_survivor_tail = tail;
+ }
+
+ void record_thread_age_table(ageTable* age_table)
+ {
+ _survivors_age_table.merge_par(age_table);
+ }
+
+ // Calculates survivor space parameters.
+ void calculate_survivors_policy();
+
};
// This encapsulates a particular strategy for a g1 Collector.
--- a/hotspot/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -28,7 +28,7 @@
/***** ALL TIMES ARE IN SECS!!!!!!! *****/
// this is the "interface"
-class G1MMUTracker {
+class G1MMUTracker: public CHeapObj {
protected:
double _time_slice;
double _max_gc_time; // this is per time slice
@@ -67,7 +67,7 @@
}
};
-class G1MMUTrackerQueueElem {
+class G1MMUTrackerQueueElem VALUE_OBJ_CLASS_SPEC {
private:
double _start_time;
double _end_time;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -572,6 +572,9 @@
}
guarantee( _cards_scanned == NULL, "invariant" );
_cards_scanned = NEW_C_HEAP_ARRAY(size_t, n_workers());
+ for (uint i = 0; i < n_workers(); ++i) {
+ _cards_scanned[i] = 0;
+ }
_total_cards_scanned = 0;
}
--- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -30,7 +30,7 @@
class HRInto_G1RemSet;
class ConcurrentG1Refine;
-class G1RemSet {
+class G1RemSet: public CHeapObj {
protected:
G1CollectedHeap* _g1;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -281,7 +281,17 @@
develop(bool, G1HRRSFlushLogBuffersOnVerify, false, \
"Forces flushing of log buffers before verification.") \
\
- product(intx, G1MaxSurvivorRegions, 0, \
- "The maximum number of survivor regions")
+ product(bool, G1UseSurvivorSpace, true, \
+ "When true, use survivor space.") \
+ \
+ product(bool, G1FixedTenuringThreshold, false, \
+ "When set, G1 will not adjust the tenuring threshold") \
+ \
+ product(bool, G1FixedEdenSize, false, \
+ "When set, G1 will not allocate unused survivor space regions") \
+ \
+ product(uintx, G1FixedSurvivorSpaceSize, 0, \
+ "If non-0 is the size of the G1 survivor space, " \
+ "otherwise SurvivorRatio is used to determine the size")
G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -566,7 +566,11 @@
void note_end_of_copying() {
assert(top() >= _next_top_at_mark_start,
"Increase only");
- _next_top_at_mark_start = top();
+ // Survivor regions will be scanned on the start of concurrent
+ // marking.
+ if (!is_survivor()) {
+ _next_top_at_mark_start = top();
+ }
}
// Returns "false" iff no object in the region was allocated when the
@@ -829,7 +833,7 @@
// A linked lists of heap regions. It leaves the "next" field
// unspecified; that's up to subtypes.
-class RegionList {
+class RegionList VALUE_OBJ_CLASS_SPEC {
protected:
virtual HeapRegion* get_next(HeapRegion* chr) = 0;
virtual void set_next(HeapRegion* chr,
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -65,9 +65,11 @@
// We need access in order to union things into the base table.
BitMap* bm() { return &_bm; }
+#if PRT_COUNT_OCCUPIED
void recount_occupied() {
_occupied = (jint) bm()->count_one_bits();
}
+#endif
PerRegionTable(HeapRegion* hr) :
_hr(hr),
@@ -1144,7 +1146,9 @@
size_t i = _outgoing_region_map.get_next_one_offset(0);
while (i < _outgoing_region_map.size()) {
HeapRegion* to_region = g1h->region_at(i);
- to_region->rem_set()->clear_incoming_entry(hr());
+ if (!to_region->in_collection_set()) {
+ to_region->rem_set()->clear_incoming_entry(hr());
+ }
i = _outgoing_region_map.get_next_one_offset(i+1);
}
}
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -58,7 +58,7 @@
// is represented. If a deleted PRT is re-used, a thread adding a bit,
// thinking the PRT is for a different region, does no harm.
-class OtherRegionsTable: public CHeapObj {
+class OtherRegionsTable VALUE_OBJ_CLASS_SPEC {
friend class HeapRegionRemSetIterator;
G1CollectedHeap* _g1h;
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -29,7 +29,7 @@
class PtrQueueSet;
-class PtrQueue: public CHeapObj {
+class PtrQueue VALUE_OBJ_CLASS_SPEC {
protected:
// The ptr queue set to which this queue belongs.
@@ -130,7 +130,7 @@
// In particular, the individual queues allocate buffers from this shared
// set, and return completed buffers to the set.
// All these variables are are protected by the TLOQ_CBL_mon. XXX ???
-class PtrQueueSet: public CHeapObj {
+class PtrQueueSet VALUE_OBJ_CLASS_SPEC {
protected:
--- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -33,7 +33,7 @@
// old versions synchronously.
-class SparsePRTEntry {
+class SparsePRTEntry: public CHeapObj {
public:
enum SomePublicConstants {
CardsPerEntry = (short)4,
@@ -167,7 +167,7 @@
};
// ValueObj because will be embedded in HRRS iterator.
-class RSHashTableIter: public CHeapObj {
+class RSHashTableIter VALUE_OBJ_CLASS_SPEC {
short _tbl_ind;
short _bl_ind;
short _card_ind;
@@ -213,7 +213,7 @@
class SparsePRTIter;
-class SparsePRT : public CHeapObj {
+class SparsePRT VALUE_OBJ_CLASS_SPEC {
// Iterations are done on the _cur hash table, since they only need to
// see entries visible at the start of a collection pause.
// All other operations are done using the _next hash table.
--- a/hotspot/src/share/vm/gc_implementation/g1/survRateGroup.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/survRateGroup.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -29,23 +29,14 @@
const char* name,
size_t summary_surv_rates_len) :
_g1p(g1p), _name(name),
- _all_regions_allocated(0),
- _curr_length(0), _scan_only_prefix(0), _setup_seq_num(0),
- _array_length(0), _surv_rate(NULL), _accum_surv_rate_pred(NULL),
- _accum_surv_rate(0.0), _surv_rate_pred(NULL), _last_pred(0.0),
_summary_surv_rates_len(summary_surv_rates_len),
_summary_surv_rates_max_len(0),
- _summary_surv_rates(NULL) {
-
- // the following will set up the arrays with length 1
- _curr_length = 1;
- stop_adding_regions();
- guarantee( _array_length == 1, "invariant" );
- guarantee( _surv_rate_pred[0] != NULL, "invariant" );
- _surv_rate_pred[0]->add(0.4);
- all_surviving_words_recorded(false);
- _curr_length = 0;
-
+ _summary_surv_rates(NULL),
+ _surv_rate(NULL),
+ _accum_surv_rate_pred(NULL),
+ _surv_rate_pred(NULL)
+{
+ reset();
if (summary_surv_rates_len > 0) {
size_t length = summary_surv_rates_len;
_summary_surv_rates = NEW_C_HEAP_ARRAY(NumberSeq*, length);
@@ -60,61 +51,80 @@
start_adding_regions();
}
+
+void SurvRateGroup::reset()
+{
+ _all_regions_allocated = 0;
+ _scan_only_prefix = 0;
+ _setup_seq_num = 0;
+ _stats_arrays_length = 0;
+ _accum_surv_rate = 0.0;
+ _last_pred = 0.0;
+ // the following will set up the arrays with length 1
+ _region_num = 1;
+ stop_adding_regions();
+ guarantee( _stats_arrays_length == 1, "invariant" );
+ guarantee( _surv_rate_pred[0] != NULL, "invariant" );
+ _surv_rate_pred[0]->add(0.4);
+ all_surviving_words_recorded(false);
+ _region_num = 0;
+}
+
+
void
SurvRateGroup::start_adding_regions() {
- _setup_seq_num = _array_length;
- _curr_length = _scan_only_prefix;
+ _setup_seq_num = _stats_arrays_length;
+ _region_num = _scan_only_prefix;
_accum_surv_rate = 0.0;
#if 0
- gclog_or_tty->print_cr("start adding regions, seq num %d, length %d",
- _setup_seq_num, _curr_length);
+ gclog_or_tty->print_cr("[%s] start adding regions, seq num %d, length %d",
+ _name, _setup_seq_num, _region_num);
#endif // 0
}
void
SurvRateGroup::stop_adding_regions() {
- size_t length = _curr_length;
#if 0
- gclog_or_tty->print_cr("stop adding regions, length %d", length);
+ gclog_or_tty->print_cr("[%s] stop adding regions, length %d", _name, _region_num);
#endif // 0
- if (length > _array_length) {
+ if (_region_num > _stats_arrays_length) {
double* old_surv_rate = _surv_rate;
double* old_accum_surv_rate_pred = _accum_surv_rate_pred;
TruncatedSeq** old_surv_rate_pred = _surv_rate_pred;
- _surv_rate = NEW_C_HEAP_ARRAY(double, length);
+ _surv_rate = NEW_C_HEAP_ARRAY(double, _region_num);
if (_surv_rate == NULL) {
- vm_exit_out_of_memory(sizeof(double) * length,
+ vm_exit_out_of_memory(sizeof(double) * _region_num,
"Not enough space for surv rate array.");
}
- _accum_surv_rate_pred = NEW_C_HEAP_ARRAY(double, length);
+ _accum_surv_rate_pred = NEW_C_HEAP_ARRAY(double, _region_num);
if (_accum_surv_rate_pred == NULL) {
- vm_exit_out_of_memory(sizeof(double) * length,
+ vm_exit_out_of_memory(sizeof(double) * _region_num,
"Not enough space for accum surv rate pred array.");
}
- _surv_rate_pred = NEW_C_HEAP_ARRAY(TruncatedSeq*, length);
+ _surv_rate_pred = NEW_C_HEAP_ARRAY(TruncatedSeq*, _region_num);
if (_surv_rate == NULL) {
- vm_exit_out_of_memory(sizeof(TruncatedSeq*) * length,
+ vm_exit_out_of_memory(sizeof(TruncatedSeq*) * _region_num,
"Not enough space for surv rate pred array.");
}
- for (size_t i = 0; i < _array_length; ++i)
+ for (size_t i = 0; i < _stats_arrays_length; ++i)
_surv_rate_pred[i] = old_surv_rate_pred[i];
#if 0
- gclog_or_tty->print_cr("stop adding regions, new seqs %d to %d",
- _array_length, length - 1);
+ gclog_or_tty->print_cr("[%s] stop adding regions, new seqs %d to %d",
+ _name, _array_length, _region_num - 1);
#endif // 0
- for (size_t i = _array_length; i < length; ++i) {
+ for (size_t i = _stats_arrays_length; i < _region_num; ++i) {
_surv_rate_pred[i] = new TruncatedSeq(10);
// _surv_rate_pred[i]->add(last_pred);
}
- _array_length = length;
+ _stats_arrays_length = _region_num;
if (old_surv_rate != NULL)
FREE_C_HEAP_ARRAY(double, old_surv_rate);
@@ -124,7 +134,7 @@
FREE_C_HEAP_ARRAY(NumberSeq*, old_surv_rate_pred);
}
- for (size_t i = 0; i < _array_length; ++i)
+ for (size_t i = 0; i < _stats_arrays_length; ++i)
_surv_rate[i] = 0.0;
}
@@ -135,7 +145,7 @@
double ret = _accum_surv_rate;
if (adjustment > 0) {
- TruncatedSeq* seq = get_seq(_curr_length+1);
+ TruncatedSeq* seq = get_seq(_region_num+1);
double surv_rate = _g1p->get_new_prediction(seq);
ret += surv_rate;
}
@@ -145,23 +155,23 @@
int
SurvRateGroup::next_age_index() {
- TruncatedSeq* seq = get_seq(_curr_length);
+ TruncatedSeq* seq = get_seq(_region_num);
double surv_rate = _g1p->get_new_prediction(seq);
_accum_surv_rate += surv_rate;
- ++_curr_length;
+ ++_region_num;
return (int) ++_all_regions_allocated;
}
void
SurvRateGroup::record_scan_only_prefix(size_t scan_only_prefix) {
- guarantee( scan_only_prefix <= _curr_length, "pre-condition" );
+ guarantee( scan_only_prefix <= _region_num, "pre-condition" );
_scan_only_prefix = scan_only_prefix;
}
void
SurvRateGroup::record_surviving_words(int age_in_group, size_t surv_words) {
- guarantee( 0 <= age_in_group && (size_t) age_in_group < _curr_length,
+ guarantee( 0 <= age_in_group && (size_t) age_in_group < _region_num,
"pre-condition" );
guarantee( _surv_rate[age_in_group] <= 0.00001,
"should only update each slot once" );
@@ -178,15 +188,15 @@
void
SurvRateGroup::all_surviving_words_recorded(bool propagate) {
- if (propagate && _curr_length > 0) { // conservative
- double surv_rate = _surv_rate_pred[_curr_length-1]->last();
+ if (propagate && _region_num > 0) { // conservative
+ double surv_rate = _surv_rate_pred[_region_num-1]->last();
#if 0
gclog_or_tty->print_cr("propagating %1.2lf from %d to %d",
surv_rate, _curr_length, _array_length - 1);
#endif // 0
- for (size_t i = _curr_length; i < _array_length; ++i) {
+ for (size_t i = _region_num; i < _stats_arrays_length; ++i) {
guarantee( _surv_rate[i] <= 0.00001,
"the slot should not have been updated" );
_surv_rate_pred[i]->add(surv_rate);
@@ -195,7 +205,7 @@
double accum = 0.0;
double pred = 0.0;
- for (size_t i = 0; i < _array_length; ++i) {
+ for (size_t i = 0; i < _stats_arrays_length; ++i) {
pred = _g1p->get_new_prediction(_surv_rate_pred[i]);
if (pred > 1.0) pred = 1.0;
accum += pred;
@@ -209,8 +219,8 @@
void
SurvRateGroup::print() {
gclog_or_tty->print_cr("Surv Rate Group: %s (%d entries, %d scan-only)",
- _name, _curr_length, _scan_only_prefix);
- for (size_t i = 0; i < _curr_length; ++i) {
+ _name, _region_num, _scan_only_prefix);
+ for (size_t i = 0; i < _region_num; ++i) {
gclog_or_tty->print_cr(" age %4d surv rate %6.2lf %% pred %6.2lf %%%s",
i, _surv_rate[i] * 100.0,
_g1p->get_new_prediction(_surv_rate_pred[i]) * 100.0,
--- a/hotspot/src/share/vm/gc_implementation/g1/survRateGroup.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/survRateGroup.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -29,7 +29,7 @@
G1CollectorPolicy* _g1p;
const char* _name;
- size_t _array_length;
+ size_t _stats_arrays_length;
double* _surv_rate;
double* _accum_surv_rate_pred;
double _last_pred;
@@ -40,7 +40,7 @@
size_t _summary_surv_rates_max_len;
int _all_regions_allocated;
- size_t _curr_length;
+ size_t _region_num;
size_t _scan_only_prefix;
size_t _setup_seq_num;
@@ -48,6 +48,7 @@
SurvRateGroup(G1CollectorPolicy* g1p,
const char* name,
size_t summary_surv_rates_len);
+ void reset();
void start_adding_regions();
void stop_adding_regions();
void record_scan_only_prefix(size_t scan_only_prefix);
@@ -55,22 +56,21 @@
void all_surviving_words_recorded(bool propagate);
const char* name() { return _name; }
- size_t region_num() { return _curr_length; }
+ size_t region_num() { return _region_num; }
size_t scan_only_length() { return _scan_only_prefix; }
double accum_surv_rate_pred(int age) {
assert(age >= 0, "must be");
- if ((size_t)age < _array_length)
+ if ((size_t)age < _stats_arrays_length)
return _accum_surv_rate_pred[age];
else {
- double diff = (double) (age - _array_length + 1);
- return _accum_surv_rate_pred[_array_length-1] + diff * _last_pred;
+ double diff = (double) (age - _stats_arrays_length + 1);
+ return _accum_surv_rate_pred[_stats_arrays_length-1] + diff * _last_pred;
}
}
double accum_surv_rate(size_t adjustment);
TruncatedSeq* get_seq(size_t age) {
- guarantee( 0 <= age, "pre-condition" );
if (age >= _setup_seq_num) {
guarantee( _setup_seq_num > 0, "invariant" );
age = _setup_seq_num-1;
--- a/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 Fri Feb 20 10:53:39 2009 -0800
@@ -48,6 +48,7 @@
concurrentG1Refine.cpp space.inline.hpp
concurrentG1Refine.hpp globalDefinitions.hpp
+concurrentG1Refine.hpp allocation.hpp
concurrentG1RefineThread.cpp concurrentG1Refine.hpp
concurrentG1RefineThread.cpp concurrentG1RefineThread.hpp
@@ -172,6 +173,7 @@
g1CollectorPolicy.cpp g1CollectorPolicy.hpp
g1CollectorPolicy.cpp heapRegionRemSet.hpp
g1CollectorPolicy.cpp mutexLocker.hpp
+g1CollectorPolicy.cpp gcPolicyCounters.hpp
g1CollectorPolicy.hpp collectorPolicy.hpp
g1CollectorPolicy.hpp collectionSetChooser.hpp
@@ -228,7 +230,7 @@
g1MMUTracker.cpp mutexLocker.hpp
g1MMUTracker.hpp debug.hpp
-
+g1MMUTracker.hpp allocation.hpp
g1RemSet.cpp bufferingOopClosure.hpp
g1RemSet.cpp concurrentG1Refine.hpp
g1RemSet.cpp concurrentG1RefineThread.hpp
@@ -272,6 +274,7 @@
heapRegion.hpp watermark.hpp
heapRegion.hpp g1_specialized_oop_closures.hpp
heapRegion.hpp survRateGroup.hpp
+heapRegion.hpp ageTable.hpp
heapRegionRemSet.hpp sparsePRT.hpp
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -362,6 +362,10 @@
if (PrintHeapAtGC) {
Universe::print_heap_after_gc();
}
+
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
}
bool PSMarkSweep::absorb_live_data_from_eden(PSAdaptiveSizePolicy* size_policy,
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -2203,6 +2203,10 @@
collection_exit.ticks());
gc_task_manager()->print_task_time_stamps();
}
+
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
}
bool PSParallelCompact::absorb_live_data_from_eden(PSAdaptiveSizePolicy* size_policy,
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -615,6 +615,10 @@
gc_task_manager()->print_task_time_stamps();
}
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
+
return !promotion_failure_occurred;
}
--- a/hotspot/src/share/vm/gc_implementation/shared/ageTable.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/ageTable.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -67,6 +67,12 @@
}
}
+void ageTable::merge_par(ageTable* subTable) {
+ for (int i = 0; i < table_size; i++) {
+ Atomic::add_ptr(subTable->sizes[i], &sizes[i]);
+ }
+}
+
int ageTable::compute_tenuring_threshold(size_t survivor_capacity) {
size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);
size_t total = 0;
--- a/hotspot/src/share/vm/gc_implementation/shared/ageTable.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/ageTable.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -56,6 +56,7 @@
// Merge another age table with the current one. Used
// for parallel young generation gc.
void merge(ageTable* subTable);
+ void merge_par(ageTable* subTable);
// calculate new tenuring threshold based on age information
int compute_tenuring_threshold(size_t survivor_capacity);
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -42,6 +42,7 @@
class CollectedHeap : public CHeapObj {
friend class VMStructs;
friend class IsGCActiveMark; // Block structured external access to _is_gc_active
+ friend class constantPoolCacheKlass; // allocate() method inserts is_conc_safe
#ifdef ASSERT
static int _fire_out_of_memory_count;
@@ -82,8 +83,6 @@
// Reinitialize tlabs before resuming mutators.
virtual void resize_all_tlabs();
- debug_only(static void check_for_valid_allocation_state();)
-
protected:
// Allocate from the current thread's TLAB, with broken-out slow path.
inline static HeapWord* allocate_from_tlab(Thread* thread, size_t size);
@@ -142,6 +141,7 @@
PRODUCT_RETURN;
virtual void check_for_non_bad_heap_word_value(HeapWord* addr, size_t size)
PRODUCT_RETURN;
+ debug_only(static void check_for_valid_allocation_state();)
public:
enum Name {
--- a/hotspot/src/share/vm/interpreter/rewriter.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/interpreter/rewriter.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -48,9 +48,14 @@
// Creates a constant pool cache given an inverse_index_map
+// This creates the constant pool cache initially in a state
+// that is unsafe for concurrent GC processing but sets it to
+// a safe mode before the constant pool cache is returned.
constantPoolCacheHandle Rewriter::new_constant_pool_cache(intArray& inverse_index_map, TRAPS) {
const int length = inverse_index_map.length();
- constantPoolCacheOop cache = oopFactory::new_constantPoolCache(length, CHECK_(constantPoolCacheHandle()));
+ constantPoolCacheOop cache = oopFactory::new_constantPoolCache(length,
+ methodOopDesc::IsUnsafeConc,
+ CHECK_(constantPoolCacheHandle()));
cache->initialize(inverse_index_map);
return constantPoolCacheHandle(THREAD, cache);
}
--- a/hotspot/src/share/vm/libadt/dict.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/libadt/dict.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -346,9 +346,12 @@
return strcmp((const char *)k1,(const char *)k2);
}
-// Slimey cheap key comparator.
+// Cheap key comparator.
int32 cmpkey(const void *key1, const void *key2) {
- return (int32)((intptr_t)key1 - (intptr_t)key2);
+ if (key1 == key2) return 0;
+ intptr_t delta = (intptr_t)key1 - (intptr_t)key2;
+ if (delta > 0) return 1;
+ return -1;
}
//=============================================================================
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -610,6 +610,10 @@
Universe::print_heap_after_gc();
}
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
+
if (ExitAfterGCNum > 0 && total_collections() == ExitAfterGCNum) {
tty->print_cr("Stopping after GC #%d", ExitAfterGCNum);
vm_exit(-1);
--- a/hotspot/src/share/vm/memory/oopFactory.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/memory/oopFactory.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -90,9 +90,11 @@
}
-constantPoolCacheOop oopFactory::new_constantPoolCache(int length, TRAPS) {
+constantPoolCacheOop oopFactory::new_constantPoolCache(int length,
+ bool is_conc_safe,
+ TRAPS) {
constantPoolCacheKlass* ck = constantPoolCacheKlass::cast(Universe::constantPoolCacheKlassObj());
- return ck->allocate(length, CHECK_NULL);
+ return ck->allocate(length, is_conc_safe, CHECK_NULL);
}
--- a/hotspot/src/share/vm/memory/oopFactory.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/memory/oopFactory.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -84,7 +84,9 @@
static constantPoolOop new_constantPool (int length,
bool is_conc_safe,
TRAPS);
- static constantPoolCacheOop new_constantPoolCache(int length, TRAPS);
+ static constantPoolCacheOop new_constantPoolCache(int length,
+ bool is_conc_safe,
+ TRAPS);
// Instance classes
static klassOop new_instanceKlass(int vtable_len, int itable_len, int static_field_size,
--- a/hotspot/src/share/vm/oops/cpCacheKlass.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -32,13 +32,43 @@
}
-constantPoolCacheOop constantPoolCacheKlass::allocate(int length, TRAPS) {
+constantPoolCacheOop constantPoolCacheKlass::allocate(int length,
+ bool is_conc_safe,
+ TRAPS) {
// allocate memory
int size = constantPoolCacheOopDesc::object_size(length);
+
KlassHandle klass (THREAD, as_klassOop());
- constantPoolCacheOop cache = (constantPoolCacheOop)
- CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL);
+
+ // This is the original code. The code from permanent_obj_allocate()
+ // was in-lined to allow the setting of is_conc_safe before the klass
+ // is installed.
+ // constantPoolCacheOop cache = (constantPoolCacheOop)
+ // CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL);
+
+ oop obj = CollectedHeap::permanent_obj_allocate_no_klass_install(klass, size, CHECK_NULL);
+ constantPoolCacheOop cache = (constantPoolCacheOop) obj;
+ cache->set_is_conc_safe(is_conc_safe);
+ // The store to is_conc_safe must be visible before the klass
+ // is set. This should be done safely because _is_conc_safe has
+ // been declared volatile. If there are any problems, consider adding
+ // OrderAccess::storestore();
+ CollectedHeap::post_allocation_install_obj_klass(klass, obj, size);
+ NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value((HeapWord*) obj,
+ size));
+
+ // The length field affects the size of the object. The allocation
+ // above allocates the correct size (see calculation of "size") but
+ // the size() method of the constant pool cache oop will not reflect
+ // that size until the correct length is set.
cache->set_length(length);
+
+ // The store of the length must be visible before is_conc_safe is
+ // set to a safe state.
+ // This should be done safely because _is_conc_safe has
+ // been declared volatile. If there are any problems, consider adding
+ // OrderAccess::storestore();
+ cache->set_is_conc_safe(methodOopDesc::IsSafeConc);
cache->set_constant_pool(NULL);
return cache;
}
@@ -114,7 +144,6 @@
return size;
}
-
int constantPoolCacheKlass::oop_adjust_pointers(oop obj) {
assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
constantPoolCacheOop cache = (constantPoolCacheOop)obj;
@@ -131,6 +160,11 @@
return size;
}
+bool constantPoolCacheKlass::oop_is_conc_safe(oop obj) const {
+ assert(obj->is_constantPoolCache(), "should be constant pool");
+ return constantPoolCacheOop(obj)->is_conc_safe();
+}
+
#ifndef SERIALGC
void constantPoolCacheKlass::oop_copy_contents(PSPromotionManager* pm,
oop obj) {
--- a/hotspot/src/share/vm/oops/cpCacheKlass.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -32,7 +32,7 @@
// Allocation
DEFINE_ALLOCATE_PERMANENT(constantPoolCacheKlass);
- constantPoolCacheOop allocate(int length, TRAPS);
+ constantPoolCacheOop allocate(int length, bool is_conc_safe, TRAPS);
static klassOop create_klass(TRAPS);
// Casting from klassOop
@@ -48,6 +48,7 @@
// Garbage collection
void oop_follow_contents(oop obj);
int oop_adjust_pointers(oop obj);
+ virtual bool oop_is_conc_safe(oop obj) const;
// Parallel Scavenge and Parallel Old
PARALLEL_GC_DECLS
--- a/hotspot/src/share/vm/oops/cpCacheOop.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/oops/cpCacheOop.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -291,6 +291,9 @@
private:
int _length;
constantPoolOop _constant_pool; // the corresponding constant pool
+ // If true, safe for concurrent GC processing,
+ // Set unconditionally in constantPoolCacheKlass::allocate()
+ volatile bool _is_conc_safe;
// Sizing
debug_only(friend class ClassVerifier;)
@@ -316,6 +319,12 @@
constantPoolOop constant_pool() const { return _constant_pool; }
ConstantPoolCacheEntry* entry_at(int i) const { assert(0 <= i && i < length(), "index out of bounds"); return base() + i; }
+ // GC support
+ // If the _length field has not been set, the size of the
+ // constantPoolCache cannot be correctly calculated.
+ bool is_conc_safe() { return _is_conc_safe; }
+ void set_is_conc_safe(bool v) { _is_conc_safe = v; }
+
// Code generation
static ByteSize base_offset() { return in_ByteSize(sizeof(constantPoolCacheOopDesc)); }
--- a/hotspot/src/share/vm/opto/block.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/block.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -880,6 +880,7 @@
}
void PhaseCFG::verify( ) const {
+#ifdef ASSERT
// Verify sane CFG
for( uint i = 0; i < _num_blocks; i++ ) {
Block *b = _blocks[i];
@@ -894,10 +895,20 @@
"CreateEx must be first instruction in block" );
}
for( uint k = 0; k < n->req(); k++ ) {
- Node *use = n->in(k);
- if( use && use != n ) {
- assert( _bbs[use->_idx] || use->is_Con(),
+ Node *def = n->in(k);
+ if( def && def != n ) {
+ assert( _bbs[def->_idx] || def->is_Con(),
"must have block; constants for debug info ok" );
+ // Verify that instructions in the block is in correct order.
+ // Uses must follow their definition if they are at the same block.
+ // Mostly done to check that MachSpillCopy nodes are placed correctly
+ // when CreateEx node is moved in build_ifg_physical().
+ if( _bbs[def->_idx] == b &&
+ !(b->head()->is_Loop() && n->is_Phi()) &&
+ // See (+++) comment in reg_split.cpp
+ !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) {
+ assert( b->find_node(def) < j, "uses must follow definitions" );
+ }
}
}
}
@@ -914,6 +925,7 @@
assert( b->_num_succs == 2, "Conditional branch must have two targets");
}
}
+#endif
}
#endif
--- a/hotspot/src/share/vm/opto/c2_globals.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -191,6 +191,9 @@
notproduct(bool, VerifyHashTableKeys, true, \
"Verify the immutability of keys in the VN hash tables") \
\
+ notproduct(bool, VerifyRegisterAllocator , false, \
+ "Verify Register Allocator") \
+ \
develop_pd(intx, FLOATPRESSURE, \
"Number of float LRG's that constitute high register pressure") \
\
--- a/hotspot/src/share/vm/opto/cfgnode.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/cfgnode.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -858,12 +858,18 @@
// convert the one to the other.
const TypePtr* ttp = _type->make_ptr();
const TypeInstPtr* ttip = (ttp != NULL) ? ttp->isa_instptr() : NULL;
+ const TypeKlassPtr* ttkp = (ttp != NULL) ? ttp->isa_klassptr() : NULL;
bool is_intf = false;
if (ttip != NULL) {
ciKlass* k = ttip->klass();
if (k->is_loaded() && k->is_interface())
is_intf = true;
}
+ if (ttkp != NULL) {
+ ciKlass* k = ttkp->klass();
+ if (k->is_loaded() && k->is_interface())
+ is_intf = true;
+ }
// Default case: merge all inputs
const Type *t = Type::TOP; // Merged type starting value
@@ -921,6 +927,8 @@
// uplift the type.
if( !t->empty() && ttip && ttip->is_loaded() && ttip->klass()->is_interface() )
{ assert(ft == _type, ""); } // Uplift to interface
+ else if( !t->empty() && ttkp && ttkp->is_loaded() && ttkp->klass()->is_interface() )
+ { assert(ft == _type, ""); } // Uplift to interface
// Otherwise it's something stupid like non-overlapping int ranges
// found on dying counted loops.
else
@@ -936,6 +944,7 @@
// because the type system doesn't interact well with interfaces.
const TypePtr *jtp = jt->make_ptr();
const TypeInstPtr *jtip = (jtp != NULL) ? jtp->isa_instptr() : NULL;
+ const TypeKlassPtr *jtkp = (jtp != NULL) ? jtp->isa_klassptr() : NULL;
if( jtip && ttip ) {
if( jtip->is_loaded() && jtip->klass()->is_interface() &&
ttip->is_loaded() && !ttip->klass()->is_interface() ) {
@@ -945,6 +954,14 @@
jt = ft;
}
}
+ if( jtkp && ttkp ) {
+ if( jtkp->is_loaded() && jtkp->klass()->is_interface() &&
+ ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
+ assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
+ ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
+ jt = ft;
+ }
+ }
if (jt != ft && jt->base() == ft->base()) {
if (jt->isa_int() &&
jt->is_int()->_lo == ft->is_int()->_lo &&
--- a/hotspot/src/share/vm/opto/chaitin.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/chaitin.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -228,6 +228,11 @@
// them for real.
de_ssa();
+#ifdef ASSERT
+ // Veify the graph before RA.
+ verify(&live_arena);
+#endif
+
{
NOT_PRODUCT( Compile::TracePhase t3("computeLive", &_t_computeLive, TimeCompiler); )
_live = NULL; // Mark live as being not available
@@ -306,12 +311,6 @@
C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after physical split");
if (C->failing()) return;
-#ifdef ASSERT
- if( VerifyOpto ) {
- _cfg.verify();
- verify_base_ptrs(&live_arena);
- }
-#endif
NOT_PRODUCT( C->verify_graph_edges(); )
compact(); // Compact LRGs; return new lower max lrg
@@ -340,7 +339,7 @@
compress_uf_map_for_nodes();
#ifdef ASSERT
- if( VerifyOpto ) _ifg->verify(this);
+ verify(&live_arena, true);
#endif
} else {
ifg.SquareUp();
@@ -376,12 +375,6 @@
// Bail out if unique gets too large (ie - unique > MaxNodeLimit - 2*NodeLimitFudgeFactor)
C->check_node_count(2*NodeLimitFudgeFactor, "out of nodes after split");
if (C->failing()) return;
-#ifdef ASSERT
- if( VerifyOpto ) {
- _cfg.verify();
- verify_base_ptrs(&live_arena);
- }
-#endif
compact(); // Compact LRGs; return new lower max lrg
@@ -412,7 +405,7 @@
}
compress_uf_map_for_nodes();
#ifdef ASSERT
- if( VerifyOpto ) _ifg->verify(this);
+ verify(&live_arena, true);
#endif
cache_lrg_info(); // Count degree of LRGs
@@ -432,6 +425,11 @@
// Peephole remove copies
post_allocate_copy_removal();
+#ifdef ASSERT
+ // Veify the graph after RA.
+ verify(&live_arena);
+#endif
+
// max_reg is past the largest *register* used.
// Convert that to a frame_slot number.
if( _max_reg <= _matcher._new_SP )
@@ -956,7 +954,7 @@
while ((neighbor = elements.next()) != 0) {
LRG *n = &lrgs(neighbor);
#ifdef ASSERT
- if( VerifyOpto ) {
+ if( VerifyOpto || VerifyRegisterAllocator ) {
assert( _ifg->effective_degree(neighbor) == n->degree(), "" );
}
#endif
--- a/hotspot/src/share/vm/opto/chaitin.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/chaitin.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -491,6 +491,8 @@
// Verify that base pointers and derived pointers are still sane
void verify_base_ptrs( ResourceArea *a ) const;
+ void verify( ResourceArea *a, bool verify_ifg = false ) const;
+
void dump_for_spill_split_recycle() const;
public:
--- a/hotspot/src/share/vm/opto/classes.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/classes.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -129,7 +129,7 @@
macro(LShiftI)
macro(LShiftL)
macro(LoadB)
-macro(LoadC)
+macro(LoadUS)
macro(LoadD)
macro(LoadD_unaligned)
macro(LoadF)
--- a/hotspot/src/share/vm/opto/compile.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/compile.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -2005,7 +2005,7 @@
case Op_StoreP:
case Op_StoreN:
case Op_LoadB:
- case Op_LoadC:
+ case Op_LoadUS:
case Op_LoadI:
case Op_LoadKlass:
case Op_LoadNKlass:
--- a/hotspot/src/share/vm/opto/divnode.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/divnode.cpp Fri Feb 20 10:53:39 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
@@ -244,42 +244,73 @@
//---------------------long_by_long_mulhi--------------------------------------
// Generate ideal node graph for upper half of a 64 bit x 64 bit multiplication
-static Node *long_by_long_mulhi( PhaseGVN *phase, Node *dividend, jlong magic_const) {
+static Node* long_by_long_mulhi(PhaseGVN* phase, Node* dividend, jlong magic_const) {
// If the architecture supports a 64x64 mulhi, there is
// no need to synthesize it in ideal nodes.
if (Matcher::has_match_rule(Op_MulHiL)) {
- Node *v = phase->longcon(magic_const);
+ Node* v = phase->longcon(magic_const);
return new (phase->C, 3) MulHiLNode(dividend, v);
}
+ // Taken from Hacker's Delight, Fig. 8-2. Multiply high signed.
+ // (http://www.hackersdelight.org/HDcode/mulhs.c)
+ //
+ // int mulhs(int u, int v) {
+ // unsigned u0, v0, w0;
+ // int u1, v1, w1, w2, t;
+ //
+ // u0 = u & 0xFFFF; u1 = u >> 16;
+ // v0 = v & 0xFFFF; v1 = v >> 16;
+ // w0 = u0*v0;
+ // t = u1*v0 + (w0 >> 16);
+ // w1 = t & 0xFFFF;
+ // w2 = t >> 16;
+ // w1 = u0*v1 + w1;
+ // return u1*v1 + w2 + (w1 >> 16);
+ // }
+ //
+ // Note: The version above is for 32x32 multiplications, while the
+ // following inline comments are adapted to 64x64.
+
const int N = 64;
- Node *u_hi = phase->transform(new (phase->C, 3) RShiftLNode(dividend, phase->intcon(N / 2)));
- Node *u_lo = phase->transform(new (phase->C, 3) AndLNode(dividend, phase->longcon(0xFFFFFFFF)));
+ // u0 = u & 0xFFFFFFFF; u1 = u >> 32;
+ Node* u0 = phase->transform(new (phase->C, 3) AndLNode(dividend, phase->longcon(0xFFFFFFFF)));
+ Node* u1 = phase->transform(new (phase->C, 3) RShiftLNode(dividend, phase->intcon(N / 2)));
+
+ // v0 = v & 0xFFFFFFFF; v1 = v >> 32;
+ Node* v0 = phase->longcon(magic_const & 0xFFFFFFFF);
+ Node* v1 = phase->longcon(magic_const >> (N / 2));
- Node *v_hi = phase->longcon(magic_const >> N/2);
- Node *v_lo = phase->longcon(magic_const & 0XFFFFFFFF);
+ // w0 = u0*v0;
+ Node* w0 = phase->transform(new (phase->C, 3) MulLNode(u0, v0));
- Node *hihi_product = phase->transform(new (phase->C, 3) MulLNode(u_hi, v_hi));
- Node *hilo_product = phase->transform(new (phase->C, 3) MulLNode(u_hi, v_lo));
- Node *lohi_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_hi));
- Node *lolo_product = phase->transform(new (phase->C, 3) MulLNode(u_lo, v_lo));
+ // t = u1*v0 + (w0 >> 32);
+ Node* u1v0 = phase->transform(new (phase->C, 3) MulLNode(u1, v0));
+ Node* temp = phase->transform(new (phase->C, 3) URShiftLNode(w0, phase->intcon(N / 2)));
+ Node* t = phase->transform(new (phase->C, 3) AddLNode(u1v0, temp));
+
+ // w1 = t & 0xFFFFFFFF;
+ Node* w1 = new (phase->C, 3) AndLNode(t, phase->longcon(0xFFFFFFFF));
- Node *t1 = phase->transform(new (phase->C, 3) URShiftLNode(lolo_product, phase->intcon(N / 2)));
- Node *t2 = phase->transform(new (phase->C, 3) AddLNode(hilo_product, t1));
+ // w2 = t >> 32;
+ Node* w2 = new (phase->C, 3) RShiftLNode(t, phase->intcon(N / 2));
+
+ // 6732154: Construct both w1 and w2 before transforming, so t
+ // doesn't go dead prematurely.
+ w1 = phase->transform(w1);
+ w2 = phase->transform(w2);
- // Construct both t3 and t4 before transforming so t2 doesn't go dead
- // prematurely.
- Node *t3 = new (phase->C, 3) RShiftLNode(t2, phase->intcon(N / 2));
- Node *t4 = new (phase->C, 3) AndLNode(t2, phase->longcon(0xFFFFFFFF));
- t3 = phase->transform(t3);
- t4 = phase->transform(t4);
+ // w1 = u0*v1 + w1;
+ Node* u0v1 = phase->transform(new (phase->C, 3) MulLNode(u0, v1));
+ w1 = phase->transform(new (phase->C, 3) AddLNode(u0v1, w1));
- Node *t5 = phase->transform(new (phase->C, 3) AddLNode(t4, lohi_product));
- Node *t6 = phase->transform(new (phase->C, 3) RShiftLNode(t5, phase->intcon(N / 2)));
- Node *t7 = phase->transform(new (phase->C, 3) AddLNode(t3, hihi_product));
+ // return u1*v1 + w2 + (w1 >> 32);
+ Node* u1v1 = phase->transform(new (phase->C, 3) MulLNode(u1, v1));
+ Node* temp1 = phase->transform(new (phase->C, 3) AddLNode(u1v1, w2));
+ Node* temp2 = phase->transform(new (phase->C, 3) RShiftLNode(w1, phase->intcon(N / 2)));
- return new (phase->C, 3) AddLNode(t7, t6);
+ return new (phase->C, 3) AddLNode(temp1, temp2);
}
@@ -976,7 +1007,7 @@
// Expand mod
if( con >= 0 && con < max_jlong && is_power_of_2_long(con+1) ) {
- uint k = log2_long(con); // Extract k
+ uint k = exact_log2_long(con+1); // Extract k
// Basic algorithm by David Detlefs. See fastmod_long.java for gory details.
// Used to help a popular random number generator which does a long-mod
--- a/hotspot/src/share/vm/opto/gcm.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/gcm.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -29,6 +29,9 @@
#include "incls/_precompiled.incl"
#include "incls/_gcm.cpp.incl"
+// To avoid float value underflow
+#define MIN_BLOCK_FREQUENCY 1.e-35f
+
//----------------------------schedule_node_into_block-------------------------
// Insert node n into block b. Look for projections of n and make sure they
// are in b also.
@@ -1380,6 +1383,13 @@
}
}
+#ifdef ASSERT
+ for (uint i = 0; i < _num_blocks; i++ ) {
+ Block *b = _blocks[i];
+ assert(b->_freq >= MIN_BLOCK_FREQUENCY, "Register Allocator requiers meaningful block frequency");
+ }
+#endif
+
#ifndef PRODUCT
if (PrintCFGBlockFreq) {
tty->print_cr("CFG Block Frequencies");
@@ -1877,7 +1887,9 @@
float loop_freq = _freq * trip_count();
for (int i = 0; i < _members.length(); i++) {
CFGElement* s = _members.at(i);
- s->_freq *= loop_freq;
+ float block_freq = s->_freq * loop_freq;
+ if (block_freq < MIN_BLOCK_FREQUENCY) block_freq = MIN_BLOCK_FREQUENCY;
+ s->_freq = block_freq;
}
CFGLoop* ch = _child;
while (ch != NULL) {
--- a/hotspot/src/share/vm/opto/graphKit.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/graphKit.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -1836,10 +1836,7 @@
(CardTableModRefBS*)(Universe::heap()->barrier_set());
Node *b = _gvn.transform(new (C, 3) URShiftXNode( cast, _gvn.intcon(CardTableModRefBS::card_shift) ));
// We store into a byte array, so do not bother to left-shift by zero
- // Get base of card map
- assert(sizeof(*ct->byte_map_base) == sizeof(jbyte),
- "adjust this code");
- Node *c = makecon(TypeRawPtr::make((address)ct->byte_map_base));
+ Node *c = byte_map_base_node();
// Combine
Node *sb_ctl = control();
Node *sb_adr = _gvn.transform(new (C, 4) AddPNode( top()/*no base ptr*/, c, b ));
@@ -2945,16 +2942,10 @@
// Now generate allocation code
- // With escape analysis, the entire memory state is needed to be able to
- // eliminate the allocation. If the allocations cannot be eliminated, this
- // will be optimized to the raw slice when the allocation is expanded.
- Node *mem;
- if (C->do_escape_analysis()) {
- mem = reset_memory();
- set_all_memory(mem);
- } else {
- mem = memory(Compile::AliasIdxRaw);
- }
+ // The entire memory state is needed for slow path of the allocation
+ // since GC and deoptimization can happened.
+ Node *mem = reset_memory();
+ set_all_memory(mem); // Create new memory state
AllocateNode* alloc
= new (C, AllocateNode::ParmLimit)
@@ -3091,16 +3082,10 @@
// Now generate allocation code
- // With escape analysis, the entire memory state is needed to be able to
- // eliminate the allocation. If the allocations cannot be eliminated, this
- // will be optimized to the raw slice when the allocation is expanded.
- Node *mem;
- if (C->do_escape_analysis()) {
- mem = reset_memory();
- set_all_memory(mem);
- } else {
- mem = memory(Compile::AliasIdxRaw);
- }
+ // The entire memory state is needed for slow path of the allocation
+ // since GC and deoptimization can happened.
+ Node *mem = reset_memory();
+ set_all_memory(mem); // Create new memory state
// Create the AllocateArrayNode and its result projections
AllocateArrayNode* alloc
@@ -3233,12 +3218,11 @@
// Now some of the values
- Node* marking = __ load(no_ctrl, marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
- Node* index = __ load(no_ctrl, index_adr, TypeInt::INT, T_INT, Compile::AliasIdxRaw);
- Node* buffer = __ load(no_ctrl, buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
+ Node* marking = __ load(__ ctrl(), marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
// if (!marking)
__ if_then(marking, BoolTest::ne, zero); {
+ Node* index = __ load(__ ctrl(), index_adr, TypeInt::INT, T_INT, Compile::AliasIdxRaw);
const Type* t1 = adr->bottom_type();
const Type* t2 = val->bottom_type();
@@ -3246,6 +3230,7 @@
Node* orig = __ load(no_ctrl, adr, val_type, bt, alias_idx);
// if (orig != NULL)
__ if_then(orig, BoolTest::ne, null()); {
+ Node* buffer = __ load(__ ctrl(), buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
// load original value
// alias_idx correct??
@@ -3365,14 +3350,6 @@
const TypeFunc *tf = OptoRuntime::g1_wb_post_Type();
- // Get the address of the card table
- CardTableModRefBS* ct =
- (CardTableModRefBS*)(Universe::heap()->barrier_set());
- Node *card_table = __ makecon(TypeRawPtr::make((address)ct->byte_map_base));
- // Get base of card map
- assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
-
-
// Offsets into the thread
const int index_offset = in_bytes(JavaThread::dirty_card_queue_offset() +
PtrQueue::byte_offset_of_index());
@@ -3402,7 +3379,7 @@
Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) );
// Combine card table base and card offset
- Node *card_adr = __ AddP(no_base, card_table, card_offset );
+ Node *card_adr = __ AddP(no_base, byte_map_base_node(), card_offset );
// If we know the value being stored does it cross regions?
--- a/hotspot/src/share/vm/opto/graphKit.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/graphKit.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -83,6 +83,18 @@
Node* zerocon(BasicType bt) const { return _gvn.zerocon(bt); }
// (See also macro MakeConX in type.hpp, which uses intcon or longcon.)
+ // Helper for byte_map_base
+ Node* byte_map_base_node() {
+ // Get base of card map
+ CardTableModRefBS* ct = (CardTableModRefBS*)(Universe::heap()->barrier_set());
+ assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust users of this code");
+ if (ct->byte_map_base != NULL) {
+ return makecon(TypeRawPtr::make((address)ct->byte_map_base));
+ } else {
+ return null();
+ }
+ }
+
jint find_int_con(Node* n, jint value_if_unknown) {
return _gvn.find_int_con(n, value_if_unknown);
}
--- a/hotspot/src/share/vm/opto/ifg.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/ifg.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -471,12 +471,28 @@
// for the "collect_gc_info" phase later.
IndexSet liveout(_live->live(b));
uint last_inst = b->end_idx();
- // Compute last phi index
- uint last_phi;
- for( last_phi = 1; last_phi < last_inst; last_phi++ )
- if( !b->_nodes[last_phi]->is_Phi() )
+ // Compute first nonphi node index
+ uint first_inst;
+ for( first_inst = 1; first_inst < last_inst; first_inst++ )
+ if( !b->_nodes[first_inst]->is_Phi() )
break;
+ // Spills could be inserted before CreateEx node which should be
+ // first instruction in block after Phis. Move CreateEx up.
+ for( uint insidx = first_inst; insidx < last_inst; insidx++ ) {
+ Node *ex = b->_nodes[insidx];
+ if( ex->is_SpillCopy() ) continue;
+ if( insidx > first_inst && ex->is_Mach() &&
+ ex->as_Mach()->ideal_Opcode() == Op_CreateEx ) {
+ // If the CreateEx isn't above all the MachSpillCopies
+ // then move it to the top.
+ b->_nodes.remove(insidx);
+ b->_nodes.insert(first_inst, ex);
+ }
+ // Stop once a CreateEx or any other node is found
+ break;
+ }
+
// Reset block's register pressure values for each ifg construction
uint pressure[2], hrp_index[2];
pressure[0] = pressure[1] = 0;
@@ -485,7 +501,7 @@
// Liveout things are presumed live for the whole block. We accumulate
// 'area' accordingly. If they get killed in the block, we'll subtract
// the unused part of the block from the area.
- int inst_count = last_inst - last_phi;
+ int inst_count = last_inst - first_inst;
double cost = (inst_count <= 0) ? 0.0 : b->_freq * double(inst_count);
assert(!(cost < 0.0), "negative spill cost" );
IndexSetIterator elements(&liveout);
--- a/hotspot/src/share/vm/opto/lcm.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/lcm.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -107,7 +107,7 @@
was_store = false;
switch( mach->ideal_Opcode() ) {
case Op_LoadB:
- case Op_LoadC:
+ case Op_LoadUS:
case Op_LoadD:
case Op_LoadF:
case Op_LoadI:
--- a/hotspot/src/share/vm/opto/live.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/live.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -271,9 +271,9 @@
//------------------------------verify_base_ptrs-------------------------------
// Verify that base pointers and derived pointers are still sane.
-// Basically, if a derived pointer is live at a safepoint, then its
-// base pointer must be live also.
void PhaseChaitin::verify_base_ptrs( ResourceArea *a ) const {
+#ifdef ASSERT
+ Unique_Node_List worklist(a);
for( uint i = 0; i < _cfg._num_blocks; i++ ) {
Block *b = _cfg._blocks[i];
for( uint j = b->end_idx() + 1; j > 1; j-- ) {
@@ -287,28 +287,81 @@
// Now scan for a live derived pointer
if (jvms->oopoff() < sfpt->req()) {
// Check each derived/base pair
- for (uint idx = jvms->oopoff(); idx < sfpt->req(); idx += 2) {
+ for (uint idx = jvms->oopoff(); idx < sfpt->req(); idx++) {
Node *check = sfpt->in(idx);
- uint j = 0;
+ bool is_derived = ((idx - jvms->oopoff()) & 1) == 0;
// search upwards through spills and spill phis for AddP
- while(true) {
- if( !check ) break;
- int idx = check->is_Copy();
- if( idx ) {
- check = check->in(idx);
- } else if( check->is_Phi() && check->_idx >= _oldphi ) {
- check = check->in(1);
- } else
- break;
- j++;
- assert(j < 100000,"Derived pointer checking in infinite loop");
+ worklist.clear();
+ worklist.push(check);
+ uint k = 0;
+ while( k < worklist.size() ) {
+ check = worklist.at(k);
+ assert(check,"Bad base or derived pointer");
+ // See PhaseChaitin::find_base_for_derived() for all cases.
+ int isc = check->is_Copy();
+ if( isc ) {
+ worklist.push(check->in(isc));
+ } else if( check->is_Phi() ) {
+ for (uint m = 1; m < check->req(); m++)
+ worklist.push(check->in(m));
+ } else if( check->is_Con() ) {
+ if (is_derived) {
+ // Derived is NULL+offset
+ assert(!is_derived || check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad derived pointer");
+ } else {
+ assert(check->bottom_type()->is_ptr()->_offset == 0,"Bad base pointer");
+ // Base either ConP(NULL) or loadConP
+ if (check->is_Mach()) {
+ assert(check->as_Mach()->ideal_Opcode() == Op_ConP,"Bad base pointer");
+ } else {
+ assert(check->Opcode() == Op_ConP &&
+ check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad base pointer");
+ }
+ }
+ } else if( check->bottom_type()->is_ptr()->_offset == 0 ) {
+ if(check->is_Proj() || check->is_Mach() &&
+ (check->as_Mach()->ideal_Opcode() == Op_CreateEx ||
+ check->as_Mach()->ideal_Opcode() == Op_ThreadLocal ||
+ check->as_Mach()->ideal_Opcode() == Op_CMoveP ||
+ check->as_Mach()->ideal_Opcode() == Op_CheckCastPP ||
+#ifdef _LP64
+ UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_CastPP ||
+ UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_DecodeN ||
+#endif
+ check->as_Mach()->ideal_Opcode() == Op_LoadP ||
+ check->as_Mach()->ideal_Opcode() == Op_LoadKlass)) {
+ // Valid nodes
+ } else {
+ check->dump();
+ assert(false,"Bad base or derived pointer");
+ }
+ } else {
+ assert(is_derived,"Bad base pointer");
+ assert(check->is_Mach() && check->as_Mach()->ideal_Opcode() == Op_AddP,"Bad derived pointer");
+ }
+ k++;
+ assert(k < 100000,"Derived pointer checking in infinite loop");
} // End while
- assert(check->is_Mach() && check->as_Mach()->ideal_Opcode() == Op_AddP,"Bad derived pointer")
}
} // End of check for derived pointers
} // End of Kcheck for debug info
} // End of if found a safepoint
} // End of forall instructions in block
} // End of forall blocks
+#endif
}
+
+//------------------------------verify-------------------------------------
+// Verify that graphs and base pointers are still sane.
+void PhaseChaitin::verify( ResourceArea *a, bool verify_ifg ) const {
+#ifdef ASSERT
+ if( VerifyOpto || VerifyRegisterAllocator ) {
+ _cfg.verify();
+ verify_base_ptrs(a);
+ if(verify_ifg)
+ _ifg->verify(this);
+ }
#endif
+}
+
+#endif
--- a/hotspot/src/share/vm/opto/loopnode.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/loopnode.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -2654,7 +2654,7 @@
case Op_ModF:
case Op_ModD:
case Op_LoadB: // Same with Loads; they can sink
- case Op_LoadC: // during loop optimizations.
+ case Op_LoadUS: // during loop optimizations.
case Op_LoadD:
case Op_LoadF:
case Op_LoadI:
--- a/hotspot/src/share/vm/opto/macro.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/macro.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -952,13 +952,6 @@
Node* klass_node = alloc->in(AllocateNode::KlassNode);
Node* initial_slow_test = alloc->in(AllocateNode::InitialTest);
- // With escape analysis, the entire memory state was needed to be able to
- // eliminate the allocation. Since the allocations cannot be eliminated,
- // optimize it to the raw slice.
- if (mem->is_MergeMem()) {
- mem = mem->as_MergeMem()->memory_at(Compile::AliasIdxRaw);
- }
-
assert(ctrl != NULL, "must have control");
// We need a Region and corresponding Phi's to merge the slow-path and fast-path results.
// they will not be used if "always_slow" is set
@@ -1016,6 +1009,11 @@
Node *slow_mem = mem; // save the current memory state for slow path
// generate the fast allocation code unless we know that the initial test will always go slow
if (!always_slow) {
+ // Fast path modifies only raw memory.
+ if (mem->is_MergeMem()) {
+ mem = mem->as_MergeMem()->memory_at(Compile::AliasIdxRaw);
+ }
+
Node* eden_top_adr;
Node* eden_end_adr;
@@ -1239,8 +1237,6 @@
}
}
- mem = result_phi_rawmem;
-
// An allocate node has separate i_o projections for the uses on the control and i_o paths
// Replace uses of the control i_o projection with result_phi_i_o (unless we are only generating a slow call)
if (_ioproj_fallthrough == NULL) {
--- a/hotspot/src/share/vm/opto/matcher.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/matcher.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -1824,7 +1824,7 @@
mem_op = true;
break;
case Op_LoadB:
- case Op_LoadC:
+ case Op_LoadUS:
case Op_LoadD:
case Op_LoadF:
case Op_LoadI:
--- a/hotspot/src/share/vm/opto/memnode.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/memnode.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -779,14 +779,14 @@
"use LoadRangeNode instead");
switch (bt) {
case T_BOOLEAN:
- case T_BYTE: return new (C, 3) LoadBNode(ctl, mem, adr, adr_type, rt->is_int() );
- case T_INT: return new (C, 3) LoadINode(ctl, mem, adr, adr_type, rt->is_int() );
- case T_CHAR: return new (C, 3) LoadCNode(ctl, mem, adr, adr_type, rt->is_int() );
- case T_SHORT: return new (C, 3) LoadSNode(ctl, mem, adr, adr_type, rt->is_int() );
- case T_LONG: return new (C, 3) LoadLNode(ctl, mem, adr, adr_type, rt->is_long() );
- case T_FLOAT: return new (C, 3) LoadFNode(ctl, mem, adr, adr_type, rt );
- case T_DOUBLE: return new (C, 3) LoadDNode(ctl, mem, adr, adr_type, rt );
- case T_ADDRESS: return new (C, 3) LoadPNode(ctl, mem, adr, adr_type, rt->is_ptr() );
+ case T_BYTE: return new (C, 3) LoadBNode (ctl, mem, adr, adr_type, rt->is_int() );
+ case T_INT: return new (C, 3) LoadINode (ctl, mem, adr, adr_type, rt->is_int() );
+ case T_CHAR: return new (C, 3) LoadUSNode(ctl, mem, adr, adr_type, rt->is_int() );
+ case T_SHORT: return new (C, 3) LoadSNode (ctl, mem, adr, adr_type, rt->is_int() );
+ case T_LONG: return new (C, 3) LoadLNode (ctl, mem, adr, adr_type, rt->is_long() );
+ case T_FLOAT: return new (C, 3) LoadFNode (ctl, mem, adr, adr_type, rt );
+ case T_DOUBLE: return new (C, 3) LoadDNode (ctl, mem, adr, adr_type, rt );
+ case T_ADDRESS: return new (C, 3) LoadPNode (ctl, mem, adr, adr_type, rt->is_ptr() );
case T_OBJECT:
#ifdef _LP64
if (adr->bottom_type()->is_ptr_to_narrowoop()) {
@@ -1076,13 +1076,14 @@
// of the original value.
Node* mem_phi = in(Memory);
Node* offset = in(Address)->in(AddPNode::Offset);
+ Node* region = base->in(0);
Node* in1 = clone();
Node* in1_addr = in1->in(Address)->clone();
in1_addr->set_req(AddPNode::Base, base->in(allocation_index));
in1_addr->set_req(AddPNode::Address, base->in(allocation_index));
in1_addr->set_req(AddPNode::Offset, offset);
- in1->set_req(0, base->in(allocation_index));
+ in1->set_req(0, region->in(allocation_index));
in1->set_req(Address, in1_addr);
in1->set_req(Memory, mem_phi->in(allocation_index));
@@ -1091,7 +1092,7 @@
in2_addr->set_req(AddPNode::Base, base->in(load_index));
in2_addr->set_req(AddPNode::Address, base->in(load_index));
in2_addr->set_req(AddPNode::Offset, offset);
- in2->set_req(0, base->in(load_index));
+ in2->set_req(0, region->in(load_index));
in2->set_req(Address, in2_addr);
in2->set_req(Memory, mem_phi->in(load_index));
@@ -1100,7 +1101,7 @@
in2_addr = phase->transform(in2_addr);
in2 = phase->transform(in2);
- PhiNode* result = PhiNode::make_blank(base->in(0), this);
+ PhiNode* result = PhiNode::make_blank(region, this);
result->set_req(allocation_index, in1);
result->set_req(load_index, in2);
return result;
@@ -1303,6 +1304,7 @@
Node* base = AddPNode::Ideal_base_and_offset(address, phase, ignore);
if (base != NULL
&& phase->type(base)->higher_equal(TypePtr::NOTNULL)
+ && phase->C->get_alias_index(phase->type(address)->is_ptr()) != Compile::AliasIdxRaw
&& all_controls_dominate(base, phase->C->start())) {
// A method-invariant, non-null address (constant or 'this' argument).
set_req(MemNode::Control, NULL);
@@ -1356,7 +1358,7 @@
// Steps (a), (b): Walk past independent stores to find an exact match.
if (prev_mem != NULL && prev_mem != in(MemNode::Memory)) {
// (c) See if we can fold up on the spot, but don't fold up here.
- // Fold-up might require truncation (for LoadB/LoadS/LoadC) or
+ // Fold-up might require truncation (for LoadB/LoadS/LoadUS) or
// just return a prior value, which is done by Identity calls.
if (can_see_stored_value(prev_mem, phase)) {
// Make ready for step (d):
@@ -1605,14 +1607,14 @@
return LoadNode::Ideal(phase, can_reshape);
}
-//--------------------------LoadCNode::Ideal--------------------------------------
+//--------------------------LoadUSNode::Ideal-------------------------------------
//
// If the previous store is to the same address as this load,
// and the value stored was larger than a char, replace this load
// with the value stored truncated to a char. If no truncation is
// needed, the replacement is done in LoadNode::Identity().
//
-Node *LoadCNode::Ideal(PhaseGVN *phase, bool can_reshape) {
+Node *LoadUSNode::Ideal(PhaseGVN *phase, bool can_reshape) {
Node* mem = in(MemNode::Memory);
Node* value = can_see_stored_value(mem,phase);
if( value && !phase->type(value)->higher_equal( _type ) )
--- a/hotspot/src/share/vm/opto/memnode.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/memnode.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -207,11 +207,11 @@
virtual BasicType memory_type() const { return T_BYTE; }
};
-//------------------------------LoadCNode--------------------------------------
-// Load a char (16bits unsigned) from memory
-class LoadCNode : public LoadNode {
+//------------------------------LoadUSNode-------------------------------------
+// Load an unsigned short/char (16bits unsigned) from memory
+class LoadUSNode : public LoadNode {
public:
- LoadCNode( Node *c, Node *mem, Node *adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR )
+ LoadUSNode( Node *c, Node *mem, Node *adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR )
: LoadNode(c,mem,adr,at,ti) {}
virtual int Opcode() const;
virtual uint ideal_reg() const { return Op_RegI; }
--- a/hotspot/src/share/vm/opto/mulnode.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/mulnode.cpp Fri Feb 20 10:53:39 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
@@ -442,16 +442,17 @@
return load;
}
uint lop = load->Opcode();
- if( lop == Op_LoadC &&
+ if( lop == Op_LoadUS &&
con == 0x0000FFFF ) // Already zero-extended
return load;
// Masking off the high bits of a unsigned-shift-right is not
// needed either.
if( lop == Op_URShiftI ) {
const TypeInt *t12 = phase->type( load->in(2) )->isa_int();
- if( t12 && t12->is_con() ) {
- int shift_con = t12->get_con();
- int mask = max_juint >> shift_con;
+ if( t12 && t12->is_con() ) { // Shift is by a constant
+ int shift = t12->get_con();
+ shift &= BitsPerJavaInteger - 1; // semantics of Java shifts
+ int mask = max_juint >> shift;
if( (mask&con) == mask ) // If AND is useless, skip it
return load;
}
@@ -470,19 +471,19 @@
uint lop = load->Opcode();
// Masking bits off of a Character? Hi bits are already zero.
- if( lop == Op_LoadC &&
+ if( lop == Op_LoadUS &&
(mask & 0xFFFF0000) ) // Can we make a smaller mask?
return new (phase->C, 3) AndINode(load,phase->intcon(mask&0xFFFF));
// Masking bits off of a Short? Loading a Character does some masking
if( lop == Op_LoadS &&
(mask & 0xFFFF0000) == 0 ) {
- Node *ldc = new (phase->C, 3) LoadCNode(load->in(MemNode::Control),
+ Node *ldus = new (phase->C, 3) LoadUSNode(load->in(MemNode::Control),
load->in(MemNode::Memory),
load->in(MemNode::Address),
load->adr_type());
- ldc = phase->transform(ldc);
- return new (phase->C, 3) AndINode(ldc,phase->intcon(mask&0xFFFF));
+ ldus = phase->transform(ldus);
+ return new (phase->C, 3) AndINode(ldus, phase->intcon(mask&0xFFFF));
}
// Masking sign bits off of a Byte? Let the matcher use an unsigned load
@@ -579,9 +580,10 @@
// needed either.
if( lop == Op_URShiftL ) {
const TypeInt *t12 = phase->type( usr->in(2) )->isa_int();
- if( t12 && t12->is_con() ) {
- int shift_con = t12->get_con();
- jlong mask = max_julong >> shift_con;
+ if( t12 && t12->is_con() ) { // Shift is by a constant
+ int shift = t12->get_con();
+ shift &= BitsPerJavaLong - 1; // semantics of Java shifts
+ jlong mask = max_julong >> shift;
if( (mask&con) == mask ) // If AND is useless, skip it
return usr;
}
@@ -605,8 +607,8 @@
const TypeInt *t12 = phase->type(rsh->in(2))->isa_int();
if( t12 && t12->is_con() ) { // Shift is by a constant
int shift = t12->get_con();
- shift &= (BitsPerJavaInteger*2)-1; // semantics of Java shifts
- const jlong sign_bits_mask = ~(((jlong)CONST64(1) << (jlong)(BitsPerJavaInteger*2 - shift)) -1);
+ shift &= BitsPerJavaLong - 1; // semantics of Java shifts
+ const jlong sign_bits_mask = ~(((jlong)CONST64(1) << (jlong)(BitsPerJavaLong - shift)) -1);
// If the AND'ing of the 2 masks has no bits, then only original shifted
// bits survive. NO sign-extension bits survive the maskings.
if( (sign_bits_mask & mask) == 0 ) {
@@ -786,7 +788,7 @@
// Check for ((x & ((CONST64(1)<<(64-c0))-1)) << c0) which ANDs off high bits
// before shifting them away.
- const jlong bits_mask = ((jlong)CONST64(1) << (jlong)(BitsPerJavaInteger*2 - con)) - CONST64(1);
+ const jlong bits_mask = ((jlong)CONST64(1) << (jlong)(BitsPerJavaLong - con)) - CONST64(1);
if( add1_op == Op_AndL &&
phase->type(add1->in(2)) == TypeLong::make( bits_mask ) )
return new (phase->C, 3) LShiftLNode( add1->in(1), in(2) );
@@ -820,7 +822,7 @@
return TypeLong::LONG;
uint shift = r2->get_con();
- shift &= (BitsPerJavaInteger*2)-1; // semantics of Java shifts
+ shift &= BitsPerJavaLong - 1; // semantics of Java shifts
// Shift by a multiple of 64 does nothing:
if (shift == 0) return t1;
@@ -913,7 +915,7 @@
set_req(2, phase->intcon(0));
return this;
}
- else if( ld->Opcode() == Op_LoadC )
+ else if( ld->Opcode() == Op_LoadUS )
// Replace zero-extension-load with sign-extension-load
return new (phase->C, 3) LoadSNode( ld->in(MemNode::Control),
ld->in(MemNode::Memory),
@@ -1235,7 +1237,7 @@
if ( con == 0 ) return NULL; // let Identity() handle a 0 shift count
// note: mask computation below does not work for 0 shift count
// We'll be wanting the right-shift amount as a mask of that many bits
- const jlong mask = (((jlong)CONST64(1) << (jlong)(BitsPerJavaInteger*2 - con)) -1);
+ const jlong mask = (((jlong)CONST64(1) << (jlong)(BitsPerJavaLong - con)) -1);
// Check for ((x << z) + Y) >>> z. Replace with x + con>>>z
// The idiom for rounding to a power of 2 is "(Q+(2^z-1)) >>> z".
@@ -1302,7 +1304,7 @@
if (r2->is_con()) {
uint shift = r2->get_con();
- shift &= (2*BitsPerJavaInteger)-1; // semantics of Java shifts
+ shift &= BitsPerJavaLong - 1; // semantics of Java shifts
// Shift by a multiple of 64 does nothing:
if (shift == 0) return t1;
// Calculate reasonably aggressive bounds for the result.
@@ -1325,7 +1327,7 @@
const TypeLong* tl = TypeLong::make(lo, hi, MAX2(r1->_widen,r2->_widen));
#ifdef ASSERT
// Make sure we get the sign-capture idiom correct.
- if (shift == (2*BitsPerJavaInteger)-1) {
+ if (shift == BitsPerJavaLong - 1) {
if (r1->_lo >= 0) assert(tl == TypeLong::ZERO, ">>>63 of + is 0");
if (r1->_hi < 0) assert(tl == TypeLong::ONE, ">>>63 of - is +1");
}
--- a/hotspot/src/share/vm/opto/superword.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/superword.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -1444,7 +1444,7 @@
// (Start, end] half-open range defining which operands are vector
void SuperWord::vector_opd_range(Node* n, uint* start, uint* end) {
switch (n->Opcode()) {
- case Op_LoadB: case Op_LoadC:
+ case Op_LoadB: case Op_LoadUS:
case Op_LoadI: case Op_LoadL:
case Op_LoadF: case Op_LoadD:
case Op_LoadP:
--- a/hotspot/src/share/vm/opto/type.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/type.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -2471,6 +2471,8 @@
const Type* ft = join(kills);
const TypeInstPtr* ftip = ft->isa_instptr();
const TypeInstPtr* ktip = kills->isa_instptr();
+ const TypeKlassPtr* ftkp = ft->isa_klassptr();
+ const TypeKlassPtr* ktkp = kills->isa_klassptr();
if (ft->empty()) {
// Check for evil case of 'this' being a class and 'kills' expecting an
@@ -2484,6 +2486,8 @@
// uplift the type.
if (!empty() && ktip != NULL && ktip->is_loaded() && ktip->klass()->is_interface())
return kills; // Uplift to interface
+ if (!empty() && ktkp != NULL && ktkp->klass()->is_loaded() && ktkp->klass()->is_interface())
+ return kills; // Uplift to interface
return Type::TOP; // Canonical empty value
}
@@ -2499,6 +2503,12 @@
// Happens in a CTW of rt.jar, 320-341, no extra flags
return ktip->cast_to_ptr_type(ftip->ptr());
}
+ if (ftkp != NULL && ktkp != NULL &&
+ ftkp->is_loaded() && ftkp->klass()->is_interface() &&
+ ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
+ // Happens in a CTW of rt.jar, 320-341, no extra flags
+ return ktkp->cast_to_ptr_type(ftkp->ptr());
+ }
return ft;
}
@@ -3657,7 +3667,7 @@
//------------------------------cast_to_ptr_type-------------------------------
const Type *TypeKlassPtr::cast_to_ptr_type(PTR ptr) const {
- assert(_base == OopPtr, "subclass must override cast_to_ptr_type");
+ assert(_base == KlassPtr, "subclass must override cast_to_ptr_type");
if( ptr == _ptr ) return this;
return make(ptr, _klass, _offset);
}
--- a/hotspot/src/share/vm/opto/type.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/type.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -882,6 +882,8 @@
public:
ciSymbol* name() const { return _klass->name(); }
+ bool is_loaded() const { return _klass->is_loaded(); }
+
// ptr to klass 'k'
static const TypeKlassPtr *make( ciKlass* k ) { return make( TypePtr::Constant, k, 0); }
// ptr to klass 'k' with offset
--- a/hotspot/src/share/vm/opto/vectornode.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/opto/vectornode.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -239,7 +239,7 @@
return Op_XorV;
case Op_LoadB:
- case Op_LoadC:
+ case Op_LoadUS:
case Op_LoadS:
case Op_LoadI:
case Op_LoadL:
@@ -269,7 +269,7 @@
case 16: return Op_Load16B;
}
break;
- case Op_LoadC:
+ case Op_LoadUS:
switch (vlen) {
case 2: return Op_Load2C;
case 4: return Op_Load4C;
--- a/hotspot/src/share/vm/runtime/arguments.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -2489,7 +2489,7 @@
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = i;
- vm_args.ignoreUnrecognized = false;
+ vm_args.ignoreUnrecognized = IgnoreUnrecognizedVMOptions;
if (PrintVMOptions) {
const char* tail;
@@ -2536,13 +2536,12 @@
// If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
bool settings_file_specified = false;
+ const char* flags_file;
int index;
for (index = 0; index < args->nOptions; index++) {
const JavaVMOption *option = args->options + index;
if (match_option(option, "-XX:Flags=", &tail)) {
- if (!process_settings_file(tail, true, args->ignoreUnrecognized)) {
- return JNI_EINVAL;
- }
+ flags_file = tail;
settings_file_specified = true;
}
if (match_option(option, "-XX:+PrintVMOptions", &tail)) {
@@ -2551,6 +2550,24 @@
if (match_option(option, "-XX:-PrintVMOptions", &tail)) {
PrintVMOptions = false;
}
+ if (match_option(option, "-XX:+IgnoreUnrecognizedVMOptions", &tail)) {
+ IgnoreUnrecognizedVMOptions = true;
+ }
+ if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) {
+ IgnoreUnrecognizedVMOptions = false;
+ }
+ }
+
+ if (IgnoreUnrecognizedVMOptions) {
+ // uncast const to modify the flag args->ignoreUnrecognized
+ *(jboolean*)(&args->ignoreUnrecognized) = true;
+ }
+
+ // Parse specified settings file
+ if (settings_file_specified) {
+ if (!process_settings_file(flags_file, true, args->ignoreUnrecognized)) {
+ return JNI_EINVAL;
+ }
}
// Parse default .hotspotrc settings file
--- a/hotspot/src/share/vm/runtime/globals.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -1426,10 +1426,10 @@
develop(bool, CMSOverflowEarlyRestoration, false, \
"Whether preserved marks should be restored early") \
\
- product(uintx, CMSMarkStackSize, 32*K, \
+ product(uintx, CMSMarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M), \
"Size of CMS marking stack") \
\
- product(uintx, CMSMarkStackSizeMax, 4*M, \
+ product(uintx, CMSMarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M), \
"Max size of CMS marking stack") \
\
notproduct(bool, CMSMarkStackOverflowALot, false, \
@@ -1655,6 +1655,13 @@
develop(uintx, WorkStealingYieldsBeforeSleep, 1000, \
"Number of yields before a sleep is done during workstealing") \
\
+ develop(uintx, WorkStealingHardSpins, 4096, \
+ "Number of iterations in a spin loop between checks on " \
+ "time out of hard spin") \
+ \
+ develop(uintx, WorkStealingSpinToYieldRatio, 10, \
+ "Ratio of hard spins to calls to yield") \
+ \
product(uintx, PreserveMarkStackSize, 1024, \
"Size for stack used in promotion failure handling") \
\
@@ -2187,6 +2194,9 @@
product(bool, PrintVMOptions, trueInDebug, \
"print VM flag settings") \
\
+ product(bool, IgnoreUnrecognizedVMOptions, false, \
+ "Ignore unrecognized VM options") \
+ \
diagnostic(bool, SerializeVMOutput, true, \
"Use a mutex to serialize output to tty and hotspot.log") \
\
--- a/hotspot/src/share/vm/runtime/os.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/runtime/os.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -74,13 +74,11 @@
const int milliseconds_after_second =
milliseconds_since_19700101 % milliseconds_per_microsecond;
// Convert the time value to a tm and timezone variable
- const struct tm *time_struct_temp = localtime(&seconds_since_19700101);
- if (time_struct_temp == NULL) {
- assert(false, "Failed localtime");
+ struct tm time_struct;
+ if (localtime_pd(&seconds_since_19700101, &time_struct) == NULL) {
+ assert(false, "Failed localtime_pd");
return NULL;
}
- // Save the results of localtime
- const struct tm time_struct = *time_struct_temp;
const time_t zone = timezone;
// If daylight savings time is in effect,
@@ -93,10 +91,10 @@
UTC_to_local = UTC_to_local - seconds_per_hour;
}
// Compute the time zone offset.
- // localtime(3C) sets timezone to the difference (in seconds)
+ // localtime_pd() sets timezone to the difference (in seconds)
// between UTC and and local time.
// ISO 8601 says we need the difference between local time and UTC,
- // we change the sign of the localtime(3C) result.
+ // we change the sign of the localtime_pd() result.
const time_t local_to_UTC = -(UTC_to_local);
// Then we have to figure out if if we are ahead (+) or behind (-) UTC.
char sign_local_to_UTC = '+';
--- a/hotspot/src/share/vm/runtime/os.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/runtime/os.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -120,7 +120,8 @@
// Return current local time in a string (YYYY-MM-DD HH:MM:SS).
// It is MT safe, but not async-safe, as reading time zone
// information may require a lock on some platforms.
- static char* local_time_string(char *buf, size_t buflen);
+ static char* local_time_string(char *buf, size_t buflen);
+ static struct tm* localtime_pd (const time_t* clock, struct tm* res);
// Fill in buffer with current local time as an ISO-8601 string.
// E.g., YYYY-MM-DDThh:mm:ss.mmm+zzzz.
// Returns buffer, or NULL if it failed.
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp Fri Feb 20 10:53:39 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
@@ -74,6 +74,7 @@
extern int BitsPerHeapOop;
const int BitsPerJavaInteger = 32;
+const int BitsPerJavaLong = 64;
const int BitsPerSize_t = size_tSize * BitsPerByte;
// Size of a char[] needed to represent a jint as a string in decimal.
@@ -906,6 +907,14 @@
return log2_intptr(x);
}
+//* the argument must be exactly a power of 2
+inline int exact_log2_long(jlong x) {
+ #ifdef ASSERT
+ if (!is_power_of_2_long(x)) basic_fatal("x must be a power of 2");
+ #endif
+ return log2_long(x);
+}
+
// returns integer round-up to the nearest multiple of s (s must be a power of two)
inline intptr_t round_to(intptr_t x, uintx s) {
--- a/hotspot/src/share/vm/utilities/taskqueue.cpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/utilities/taskqueue.cpp Fri Feb 20 10:53:39 2009 -0800
@@ -25,6 +25,12 @@
# include "incls/_precompiled.incl"
# include "incls/_taskqueue.cpp.incl"
+#ifdef TRACESPINNING
+uint ParallelTaskTerminator::_total_yields = 0;
+uint ParallelTaskTerminator::_total_spins = 0;
+uint ParallelTaskTerminator::_total_peeks = 0;
+#endif
+
bool TaskQueueSuper::peek() {
return _bottom != _age.top();
}
@@ -69,15 +75,62 @@
ParallelTaskTerminator::offer_termination(TerminatorTerminator* terminator) {
Atomic::inc(&_offered_termination);
- juint yield_count = 0;
+ uint yield_count = 0;
+ // Number of hard spin loops done since last yield
+ uint hard_spin_count = 0;
+ // Number of iterations in the hard spin loop.
+ uint hard_spin_limit = WorkStealingHardSpins;
+
+ // If WorkStealingSpinToYieldRatio is 0, no hard spinning is done.
+ // If it is greater than 0, then start with a small number
+ // of spins and increase number with each turn at spinning until
+ // the count of hard spins exceeds WorkStealingSpinToYieldRatio.
+ // Then do a yield() call and start spinning afresh.
+ if (WorkStealingSpinToYieldRatio > 0) {
+ hard_spin_limit = WorkStealingHardSpins >> WorkStealingSpinToYieldRatio;
+ hard_spin_limit = MAX2(hard_spin_limit, 1U);
+ }
+ // Remember the initial spin limit.
+ uint hard_spin_start = hard_spin_limit;
+
+ // Loop waiting for all threads to offer termination or
+ // more work.
while (true) {
+ // Are all threads offering termination?
if (_offered_termination == _n_threads) {
- //inner_termination_loop();
return true;
} else {
+ // Look for more work.
+ // Periodically sleep() instead of yield() to give threads
+ // waiting on the cores the chance to grab this code
if (yield_count <= WorkStealingYieldsBeforeSleep) {
+ // Do a yield or hardspin. For purposes of deciding whether
+ // to sleep, count this as a yield.
yield_count++;
- yield();
+
+ // Periodically call yield() instead spinning
+ // After WorkStealingSpinToYieldRatio spins, do a yield() call
+ // and reset the counts and starting limit.
+ if (hard_spin_count > WorkStealingSpinToYieldRatio) {
+ yield();
+ hard_spin_count = 0;
+ hard_spin_limit = hard_spin_start;
+#ifdef TRACESPINNING
+ _total_yields++;
+#endif
+ } else {
+ // Hard spin this time
+ // Increase the hard spinning period but only up to a limit.
+ hard_spin_limit = MIN2(2*hard_spin_limit,
+ (uint) WorkStealingHardSpins);
+ for (uint j = 0; j < hard_spin_limit; j++) {
+ SpinPause();
+ }
+ hard_spin_count++;
+#ifdef TRACESPINNING
+ _total_spins++;
+#endif
+ }
} else {
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("ParallelTaskTerminator::offer_termination() "
@@ -92,6 +145,9 @@
sleep(WorkStealingSleepMillis);
}
+#ifdef TRACESPINNING
+ _total_peeks++;
+#endif
if (peek_in_queue_set() ||
(terminator != NULL && terminator->should_exit_termination())) {
Atomic::dec(&_offered_termination);
@@ -101,6 +157,16 @@
}
}
+#ifdef TRACESPINNING
+void ParallelTaskTerminator::print_termination_counts() {
+ gclog_or_tty->print_cr("ParallelTaskTerminator Total yields: %lld "
+ "Total spins: %lld Total peeks: %lld",
+ total_yields(),
+ total_spins(),
+ total_peeks());
+}
+#endif
+
void ParallelTaskTerminator::reset_for_reuse() {
if (_offered_termination != 0) {
assert(_offered_termination == _n_threads,
--- a/hotspot/src/share/vm/utilities/taskqueue.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/utilities/taskqueue.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -22,67 +22,76 @@
*
*/
+#ifdef LP64
+typedef juint TAG_TYPE;
+// for a taskqueue size of 4M
+#define LOG_TASKQ_SIZE 22
+#else
+typedef jushort TAG_TYPE;
+// for a taskqueue size of 16K
+#define LOG_TASKQ_SIZE 14
+#endif
+
class TaskQueueSuper: public CHeapObj {
protected:
// The first free element after the last one pushed (mod _n).
- // (For now we'll assume only 32-bit CAS).
- volatile juint _bottom;
+ volatile uint _bottom;
// log2 of the size of the queue.
enum SomeProtectedConstants {
- Log_n = 14
+ Log_n = LOG_TASKQ_SIZE
};
+#undef LOG_TASKQ_SIZE
// Size of the queue.
- juint n() { return (1 << Log_n); }
+ uint n() { return (1 << Log_n); }
// For computing "x mod n" efficiently.
- juint n_mod_mask() { return n() - 1; }
+ uint n_mod_mask() { return n() - 1; }
struct Age {
- jushort _top;
- jushort _tag;
+ TAG_TYPE _top;
+ TAG_TYPE _tag;
- jushort tag() const { return _tag; }
- jushort top() const { return _top; }
+ TAG_TYPE tag() const { return _tag; }
+ TAG_TYPE top() const { return _top; }
Age() { _tag = 0; _top = 0; }
friend bool operator ==(const Age& a1, const Age& a2) {
return a1.tag() == a2.tag() && a1.top() == a2.top();
}
-
};
Age _age;
// These make sure we do single atomic reads and writes.
Age get_age() {
- jint res = *(volatile jint*)(&_age);
+ uint res = *(volatile uint*)(&_age);
return *(Age*)(&res);
}
void set_age(Age a) {
- *(volatile jint*)(&_age) = *(int*)(&a);
+ *(volatile uint*)(&_age) = *(uint*)(&a);
}
- jushort get_top() {
+ TAG_TYPE get_top() {
return get_age().top();
}
// These both operate mod _n.
- juint increment_index(juint ind) {
+ uint increment_index(uint ind) {
return (ind + 1) & n_mod_mask();
}
- juint decrement_index(juint ind) {
+ uint decrement_index(uint ind) {
return (ind - 1) & n_mod_mask();
}
// Returns a number in the range [0.._n). If the result is "n-1", it
// should be interpreted as 0.
- juint dirty_size(juint bot, juint top) {
- return ((jint)bot - (jint)top) & n_mod_mask();
+ uint dirty_size(uint bot, uint top) {
+ return ((int)bot - (int)top) & n_mod_mask();
}
// Returns the size corresponding to the given "bot" and "top".
- juint size(juint bot, juint top) {
- juint sz = dirty_size(bot, top);
+ uint size(uint bot, uint top) {
+ uint sz = dirty_size(bot, top);
// Has the queue "wrapped", so that bottom is less than top?
// There's a complicated special case here. A pair of threads could
// perform pop_local and pop_global operations concurrently, starting
@@ -94,7 +103,7 @@
// owner performs pop_local's, and several concurrent threads
// attempting to perform the pop_global will all perform the same CAS,
// and only one can succeed. Any stealing thread that reads after
- // either the increment or decrement will seen an empty queue, and will
+ // either the increment or decrement will see an empty queue, and will
// not join the competitors. The "sz == -1 || sz == _n-1" state will
// not be modified by concurrent queues, so the owner thread can reset
// the state to _bottom == top so subsequent pushes will be performed
@@ -112,11 +121,11 @@
// Return an estimate of the number of elements in the queue.
// The "careful" version admits the possibility of pop_local/pop_global
// races.
- juint size() {
+ uint size() {
return size(_bottom, get_top());
}
- juint dirty_size() {
+ uint dirty_size() {
return dirty_size(_bottom, get_top());
}
@@ -127,15 +136,15 @@
// Maximum number of elements allowed in the queue. This is two less
// than the actual queue size, for somewhat complicated reasons.
- juint max_elems() { return n() - 2; }
+ uint max_elems() { return n() - 2; }
};
template<class E> class GenericTaskQueue: public TaskQueueSuper {
private:
// Slow paths for push, pop_local. (pop_global has no fast path.)
- bool push_slow(E t, juint dirty_n_elems);
- bool pop_local_slow(juint localBot, Age oldAge);
+ bool push_slow(E t, uint dirty_n_elems);
+ bool pop_local_slow(uint localBot, Age oldAge);
public:
// Initializes the queue to empty.
@@ -170,7 +179,7 @@
template<class E>
GenericTaskQueue<E>::GenericTaskQueue():TaskQueueSuper() {
- assert(sizeof(Age) == sizeof(jint), "Depends on this.");
+ assert(sizeof(Age) == sizeof(int), "Depends on this.");
}
template<class E>
@@ -182,9 +191,9 @@
template<class E>
void GenericTaskQueue<E>::oops_do(OopClosure* f) {
// tty->print_cr("START OopTaskQueue::oops_do");
- int iters = size();
- juint index = _bottom;
- for (int i = 0; i < iters; ++i) {
+ uint iters = size();
+ uint index = _bottom;
+ for (uint i = 0; i < iters; ++i) {
index = decrement_index(index);
// tty->print_cr(" doing entry %d," INTPTR_T " -> " INTPTR_T,
// index, &_elems[index], _elems[index]);
@@ -198,10 +207,10 @@
template<class E>
-bool GenericTaskQueue<E>::push_slow(E t, juint dirty_n_elems) {
+bool GenericTaskQueue<E>::push_slow(E t, uint dirty_n_elems) {
if (dirty_n_elems == n() - 1) {
// Actually means 0, so do the push.
- juint localBot = _bottom;
+ uint localBot = _bottom;
_elems[localBot] = t;
_bottom = increment_index(localBot);
return true;
@@ -211,7 +220,7 @@
template<class E>
bool GenericTaskQueue<E>::
-pop_local_slow(juint localBot, Age oldAge) {
+pop_local_slow(uint localBot, Age oldAge) {
// This queue was observed to contain exactly one element; either this
// thread will claim it, or a competing "pop_global". In either case,
// the queue will be logically empty afterwards. Create a new Age value
@@ -230,9 +239,8 @@
Age tempAge;
// No competing pop_global has yet incremented "top"; we'll try to
// install new_age, thus claiming the element.
- assert(sizeof(Age) == sizeof(jint) && sizeof(jint) == sizeof(juint),
- "Assumption about CAS unit.");
- *(jint*)&tempAge = Atomic::cmpxchg(*(jint*)&newAge, (volatile jint*)&_age, *(jint*)&oldAge);
+ assert(sizeof(Age) == sizeof(int), "Assumption about CAS unit.");
+ *(uint*)&tempAge = Atomic::cmpxchg(*(uint*)&newAge, (volatile uint*)&_age, *(uint*)&oldAge);
if (tempAge == oldAge) {
// We win.
assert(dirty_size(localBot, get_top()) != n() - 1,
@@ -253,8 +261,8 @@
bool GenericTaskQueue<E>::pop_global(E& t) {
Age newAge;
Age oldAge = get_age();
- juint localBot = _bottom;
- juint n_elems = size(localBot, oldAge.top());
+ uint localBot = _bottom;
+ uint n_elems = size(localBot, oldAge.top());
if (n_elems == 0) {
return false;
}
@@ -263,7 +271,7 @@
newAge._top = increment_index(newAge.top());
if ( newAge._top == 0 ) newAge._tag++;
Age resAge;
- *(jint*)&resAge = Atomic::cmpxchg(*(jint*)&newAge, (volatile jint*)&_age, *(jint*)&oldAge);
+ *(uint*)&resAge = Atomic::cmpxchg(*(uint*)&newAge, (volatile uint*)&_age, *(uint*)&oldAge);
// Note that using "_bottom" here might fail, since a pop_local might
// have decremented it.
assert(dirty_size(localBot, newAge._top) != n() - 1,
@@ -287,7 +295,7 @@
template<class E> class GenericTaskQueueSet: public TaskQueueSetSuper {
private:
- int _n;
+ uint _n;
GenericTaskQueue<E>** _queues;
public:
@@ -300,51 +308,51 @@
}
}
- bool steal_1_random(int queue_num, int* seed, E& t);
- bool steal_best_of_2(int queue_num, int* seed, E& t);
- bool steal_best_of_all(int queue_num, int* seed, E& t);
+ bool steal_1_random(uint queue_num, int* seed, E& t);
+ bool steal_best_of_2(uint queue_num, int* seed, E& t);
+ bool steal_best_of_all(uint queue_num, int* seed, E& t);
- void register_queue(int i, GenericTaskQueue<E>* q);
+ void register_queue(uint i, GenericTaskQueue<E>* q);
- GenericTaskQueue<E>* queue(int n);
+ GenericTaskQueue<E>* queue(uint n);
// The thread with queue number "queue_num" (and whose random number seed
// is at "seed") is trying to steal a task from some other queue. (It
// may try several queues, according to some configuration parameter.)
// If some steal succeeds, returns "true" and sets "t" the stolen task,
// otherwise returns false.
- bool steal(int queue_num, int* seed, E& t);
+ bool steal(uint queue_num, int* seed, E& t);
bool peek();
};
template<class E>
-void GenericTaskQueueSet<E>::register_queue(int i, GenericTaskQueue<E>* q) {
- assert(0 <= i && i < _n, "index out of range.");
+void GenericTaskQueueSet<E>::register_queue(uint i, GenericTaskQueue<E>* q) {
+ assert(i < _n, "index out of range.");
_queues[i] = q;
}
template<class E>
-GenericTaskQueue<E>* GenericTaskQueueSet<E>::queue(int i) {
+GenericTaskQueue<E>* GenericTaskQueueSet<E>::queue(uint i) {
return _queues[i];
}
template<class E>
-bool GenericTaskQueueSet<E>::steal(int queue_num, int* seed, E& t) {
- for (int i = 0; i < 2 * _n; i++)
+bool GenericTaskQueueSet<E>::steal(uint queue_num, int* seed, E& t) {
+ for (uint i = 0; i < 2 * _n; i++)
if (steal_best_of_2(queue_num, seed, t))
return true;
return false;
}
template<class E>
-bool GenericTaskQueueSet<E>::steal_best_of_all(int queue_num, int* seed, E& t) {
+bool GenericTaskQueueSet<E>::steal_best_of_all(uint queue_num, int* seed, E& t) {
if (_n > 2) {
int best_k;
- jint best_sz = 0;
- for (int k = 0; k < _n; k++) {
+ uint best_sz = 0;
+ for (uint k = 0; k < _n; k++) {
if (k == queue_num) continue;
- jint sz = _queues[k]->size();
+ uint sz = _queues[k]->size();
if (sz > best_sz) {
best_sz = sz;
best_k = k;
@@ -362,9 +370,9 @@
}
template<class E>
-bool GenericTaskQueueSet<E>::steal_1_random(int queue_num, int* seed, E& t) {
+bool GenericTaskQueueSet<E>::steal_1_random(uint queue_num, int* seed, E& t) {
if (_n > 2) {
- int k = queue_num;
+ uint k = queue_num;
while (k == queue_num) k = randomParkAndMiller(seed) % _n;
return _queues[2]->pop_global(t);
} else if (_n == 2) {
@@ -378,20 +386,20 @@
}
template<class E>
-bool GenericTaskQueueSet<E>::steal_best_of_2(int queue_num, int* seed, E& t) {
+bool GenericTaskQueueSet<E>::steal_best_of_2(uint queue_num, int* seed, E& t) {
if (_n > 2) {
- int k1 = queue_num;
+ uint k1 = queue_num;
while (k1 == queue_num) k1 = randomParkAndMiller(seed) % _n;
- int k2 = queue_num;
+ uint k2 = queue_num;
while (k2 == queue_num || k2 == k1) k2 = randomParkAndMiller(seed) % _n;
// Sample both and try the larger.
- juint sz1 = _queues[k1]->size();
- juint sz2 = _queues[k2]->size();
+ uint sz1 = _queues[k1]->size();
+ uint sz2 = _queues[k2]->size();
if (sz2 > sz1) return _queues[k2]->pop_global(t);
else return _queues[k1]->pop_global(t);
} else if (_n == 2) {
// Just try the other one.
- int k = (queue_num + 1) % 2;
+ uint k = (queue_num + 1) % 2;
return _queues[k]->pop_global(t);
} else {
assert(_n == 1, "can't be zero.");
@@ -402,7 +410,7 @@
template<class E>
bool GenericTaskQueueSet<E>::peek() {
// Try all the queues.
- for (int j = 0; j < _n; j++) {
+ for (uint j = 0; j < _n; j++) {
if (_queues[j]->peek())
return true;
}
@@ -418,11 +426,19 @@
// A class to aid in the termination of a set of parallel tasks using
// TaskQueueSet's for work stealing.
+#undef TRACESPINNING
+
class ParallelTaskTerminator: public StackObj {
private:
int _n_threads;
TaskQueueSetSuper* _queue_set;
- jint _offered_termination;
+ int _offered_termination;
+
+#ifdef TRACESPINNING
+ static uint _total_yields;
+ static uint _total_spins;
+ static uint _total_peeks;
+#endif
bool peek_in_queue_set();
protected:
@@ -454,13 +470,19 @@
// the terminator is finished.
void reset_for_reuse();
+#ifdef TRACESPINNING
+ static uint total_yields() { return _total_yields; }
+ static uint total_spins() { return _total_spins; }
+ static uint total_peeks() { return _total_peeks; }
+ static void print_termination_counts();
+#endif
};
#define SIMPLE_STACK 0
template<class E> inline bool GenericTaskQueue<E>::push(E t) {
#if SIMPLE_STACK
- juint localBot = _bottom;
+ uint localBot = _bottom;
if (_bottom < max_elems()) {
_elems[localBot] = t;
_bottom = localBot + 1;
@@ -469,10 +491,10 @@
return false;
}
#else
- juint localBot = _bottom;
+ uint localBot = _bottom;
assert((localBot >= 0) && (localBot < n()), "_bottom out of range.");
- jushort top = get_top();
- juint dirty_n_elems = dirty_size(localBot, top);
+ TAG_TYPE top = get_top();
+ uint dirty_n_elems = dirty_size(localBot, top);
assert((dirty_n_elems >= 0) && (dirty_n_elems < n()),
"n_elems out of range.");
if (dirty_n_elems < max_elems()) {
@@ -487,19 +509,19 @@
template<class E> inline bool GenericTaskQueue<E>::pop_local(E& t) {
#if SIMPLE_STACK
- juint localBot = _bottom;
+ uint localBot = _bottom;
assert(localBot > 0, "precondition.");
localBot--;
t = _elems[localBot];
_bottom = localBot;
return true;
#else
- juint localBot = _bottom;
+ uint localBot = _bottom;
// This value cannot be n-1. That can only occur as a result of
// the assignment to bottom in this method. If it does, this method
// resets the size( to 0 before the next call (which is sequential,
// since this is pop_local.)
- juint dirty_n_elems = dirty_size(localBot, get_top());
+ uint dirty_n_elems = dirty_size(localBot, get_top());
assert(dirty_n_elems != n() - 1, "Shouldn't be possible...");
if (dirty_n_elems == 0) return false;
localBot = decrement_index(localBot);
@@ -512,7 +534,7 @@
// If there's still at least one element in the queue, based on the
// "_bottom" and "age" we've read, then there can be no interference with
// a "pop_global" operation, and we're done.
- juint tp = get_top();
+ TAG_TYPE tp = get_top(); // XXX
if (size(localBot, tp) > 0) {
assert(dirty_size(localBot, tp) != n() - 1,
"Shouldn't be possible...");
@@ -581,7 +603,7 @@
bool is_empty();
bool stealable_is_empty();
bool overflow_is_empty();
- juint stealable_size() { return _region_queue.size(); }
+ uint stealable_size() { return _region_queue.size(); }
RegionTaskQueue* task_queue() { return &_region_queue; }
};
--- a/hotspot/src/share/vm/utilities/workgroup.hpp Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/src/share/vm/utilities/workgroup.hpp Fri Feb 20 10:53:39 2009 -0800
@@ -32,7 +32,7 @@
// An abstract task to be worked on by a gang.
// You subclass this to supply your own work() method
-class AbstractGangTask: public CHeapObj {
+class AbstractGangTask VALUE_OBJ_CLASS_SPEC {
public:
// The abstract work method.
// The argument tells you which member of the gang you are.
--- a/hotspot/test/Makefile Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/test/Makefile Fri Feb 20 10:53:39 2009 -0800
@@ -28,9 +28,9 @@
# Get OS/ARCH specifics
OSNAME = $(shell uname -s)
-SLASH_JAVA = /java
ifeq ($(OSNAME), SunOS)
PLATFORM = solaris
+ SLASH_JAVA = /java
ARCH = $(shell uname -p)
ifeq ($(ARCH), i386)
ARCH=i586
@@ -38,6 +38,7 @@
endif
ifeq ($(OSNAME), Linux)
PLATFORM = linux
+ SLASH_JAVA = /java
ARCH = $(shell uname -m)
ifeq ($(ARCH), i386)
ARCH = i586
@@ -62,6 +63,10 @@
EXESUFFIX = .exe
endif
+ifdef ALT_SLASH_JAVA
+ SLASH_JAVA = $(ALT_SLASH_JAVA)
+endif
+
# Utilities used
CD = cd
CP = cp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6603011/Test.java Fri Feb 20 10:53:39 2009 -0800
@@ -0,0 +1,220 @@
+/*
+ * 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 6603011
+ * @summary long/int division by constant
+ *
+ * @run main/othervm -Xcomp -Xbatch -XX:-Inline Test
+ */
+
+//
+// -XX:-Inline is essential to this test so that verification functions
+// divi, modi, divl and modl generate "plain" divides.
+// -Xcomp -Xbatch are also useful to ensure the full range of
+// dividend and divisor combinations are tested
+//
+
+import java.net.*;
+
+class s {
+ static int divi(int dividend, int divisor) { return dividend / divisor; }
+ static int modi(int dividend, int divisor) { return dividend % divisor; }
+ static long divl(long dividend, long divisor) { return dividend / divisor; }
+ static long modl(long dividend, long divisor) { return dividend % divisor; }
+}
+
+public class Test implements Runnable {
+ // Report verbose messages on failure; turn off to suppress
+ // too much output with gross numbers of failures.
+ static final boolean VERBOSE = true;
+
+ // Initailize DIVISOR so that it is final in this class.
+ static final int DIVISOR;
+ static {
+ int value = 0;
+ try {
+ value = Integer.decode(System.getProperty("divisor"));
+ } catch (Throwable e) {
+ }
+ DIVISOR = value;
+ }
+
+ // The methods of interest. We want the JIT to compile these
+ // and convert the divide into a multiply.
+ public int divbyI (int dividend) { return dividend / DIVISOR; }
+ public int modbyI (int dividend) { return dividend % DIVISOR; }
+ public long divbyL (long dividend) { return dividend / DIVISOR; }
+ public long modbyL (long dividend) { return dividend % DIVISOR; }
+
+ public int divisor() { return DIVISOR; }
+
+ public boolean checkI (int dividend) {
+ int quo = divbyI(dividend);
+ int rem = modbyI(dividend);
+ int quo0 = s.divi(dividend, divisor());
+ int rem0 = s.modi(dividend, divisor());
+
+ if (quo != quo0 || rem != rem0) {
+ if (VERBOSE) {
+ System.out.println("Computed: " + dividend + " / " + divisor() + " = " +
+ quo + ", " + dividend + " % " + divisor() + " = " + rem );
+ System.out.println("expected: " + dividend + " / " + divisor() + " = " +
+ quo0 + ", " + dividend + " % " + divisor() + " = " + rem0);
+ // Report sign of rem failure
+ if (rem != 0 && (rem ^ dividend) < 0) {
+ System.out.println(" rem & dividend have different signs");
+ }
+ // Report range of rem failure
+ if (java.lang.Math.abs(rem) >= java.lang.Math.abs(divisor())) {
+ System.out.println(" remainder out of range");
+ }
+ // Report quo/rem identity relationship failure
+ if ((quo * divisor()) + rem != dividend) {
+ System.out.println(" quotien/remainder invariant broken");
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ public boolean checkL (long dividend) {
+ long quo = divbyL(dividend);
+ long rem = modbyL(dividend);
+ long quo0 = s.divl(dividend, divisor());
+ long rem0 = s.modl(dividend, divisor());
+
+ if (quo != quo0 || rem != rem0) {
+ if (VERBOSE) {
+ System.out.println(" " + dividend + " / " + divisor() + " = " +
+ quo + ", " + dividend + " % " + divisor() + " = " + rem);
+ // Report sign of rem failure
+ if (rem != 0 && (rem ^ dividend) < 0) {
+ System.out.println(" rem & dividend have different signs");
+ }
+ // Report range of rem failure
+ if (java.lang.Math.abs(rem) >= java.lang.Math.abs(divisor())) {
+ System.out.println(" remainder out of range");
+ }
+ // Report quo/rem identity relationship failure
+ if ((quo * divisor()) + rem != dividend) {
+ System.out.println(" (" + quo + " * " + divisor() + ") + " + rem + " != "
+ + dividend);
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ public void run() {
+ // Don't try to divide by zero
+ if (divisor() == 0) return;
+
+ // Range of dividends to check. Try dividends from start to end
+ // inclusive, as well as variations on those values as shifted
+ // left.
+ int start = -1024;
+ int end = 1024;
+
+ // Test int division using a variety of dividends.
+ int wrong = 0;
+ int total = 0;
+
+ outerloop:
+ for (int i = start; i <= end; i++) {
+ for (int s = 0; s < 32; s += 4) {
+ total++;
+ int dividend = i << s;
+ if (!checkI(dividend)) {
+ wrong++;
+ // Stop on the first failure
+ // break outerloop;
+ }
+ }
+ }
+ if (wrong > 0) {
+ System.out.println("divisor " + divisor() + ": " +
+ wrong + "/" + total + " wrong int divisions");
+ }
+
+ // Test long division using a variety of dividends.
+ wrong = 0;
+ total = 0;
+
+ outerloop:
+ for (int i = start; i <= end; i++) {
+ for (int s = 0; s < 64; s += 4) {
+ total++;
+ long dividend = i << s;
+ if (!checkL(dividend)) {
+ wrong++;
+ // Stop on the first failure
+ // break outerloop;
+ }
+ }
+ }
+ if (wrong > 0) {
+ System.out.println("divisor " + divisor() + ": " +
+ wrong + "/" + total + " wrong long divisions");
+ }
+
+ }
+
+ // Reload this class with the "divisor" property set to the input parameter.
+ // This allows the JIT to see q.DIVISOR as a final constant, and change
+ // any divisions or mod operations into multiplies.
+ public static void test_divisor(int divisor,
+ URLClassLoader apploader) throws Exception {
+ System.setProperty("divisor", "" + divisor);
+ ClassLoader loader = new URLClassLoader(apploader.getURLs(),
+ apploader.getParent());
+ Class c = loader.loadClass("Test");
+ Runnable r = (Runnable)c.newInstance();
+ r.run();
+ }
+
+ public static void main(String[] args) throws Exception {
+ Class cl = Class.forName("Test");
+ URLClassLoader apploader = (URLClassLoader)cl.getClassLoader();
+
+
+ // Test every divisor between -100 and 100.
+ for (int i = -100; i <= 100; i++) {
+ test_divisor(i, apploader);
+ }
+
+ // Try a few divisors outside the typical range.
+ // The values below have been observed in rt.jar.
+ test_divisor(101, apploader);
+ test_divisor(400, apploader);
+ test_divisor(1000, apploader);
+ test_divisor(3600, apploader);
+ test_divisor(9973, apploader);
+ test_divisor(86400, apploader);
+ test_divisor(1000000, apploader);
+ }
+
+}
--- a/hotspot/test/compiler/6775880/Test.java Fri Feb 20 13:05:28 2009 +0800
+++ b/hotspot/test/compiler/6775880/Test.java Fri Feb 20 10:53:39 2009 -0800
@@ -27,7 +27,7 @@
* @bug 6775880
* @summary EA +DeoptimizeALot: assert(mon_info->owner()->is_locked(),"object must be locked now")
* @compile -source 1.4 -target 1.4 Test.java
- * @run main/othervm -server -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xbatch -XX:+DoEscapeAnalysis -XX:+DeoptimizeALot -XX:CompileCommand=exclude,java.lang.AbstractStringBuilder::append Test
*/
public class Test {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6795161/Test.java Fri Feb 20 10:53:39 2009 -0800
@@ -0,0 +1,60 @@
+/*
+ * 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 6795161
+ * @summary Escape analysis leads to data corruption
+ * @run main/othervm -server -Xcomp -XX:CompileOnly=Test -XX:+DoEscapeAnalysis Test
+ */
+
+class Test_Class_1 {
+ static String var_1;
+
+ static void badFunc(int size)
+ {
+ try {
+ for (int i = 0; i < 1; (new byte[size-i])[0] = 0, i++) {}
+ } catch (Exception e) {
+ // don't comment it out, it will lead to correct results ;)
+ //System.out.println("Got exception: " + e);
+ }
+ }
+}
+
+public class Test {
+ static String var_1_copy = Test_Class_1.var_1;
+
+ static byte var_check;
+
+ public static void main(String[] args)
+ {
+ var_check = 1;
+
+ Test_Class_1.badFunc(-1);
+
+ System.out.println("EATester.var_check = " + Test.var_check + " (expected 1)\n");
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6795362/Test6795362.java Fri Feb 20 10:53:39 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 6795362
+ * @summary 32bit server compiler leads to wrong results on solaris-x86
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6795362.sub Test6795362
+ */
+
+public class Test6795362 {
+ public static void main(String[] args)
+ {
+ sub();
+
+ if (var_bad != 0)
+ throw new InternalError(var_bad + " != 0");
+ }
+
+ static long var_bad = -1L;
+
+ static void sub()
+ {
+ var_bad >>= 65;
+ var_bad /= 65;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6799693/Test.java Fri Feb 20 10:53:39 2009 -0800
@@ -0,0 +1,47 @@
+/*
+ * 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 6799693
+ * @summary Server compiler leads to data corruption when expression throws an Exception
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test Test
+ */
+
+public class Test {
+ static int var_bad = 1;
+
+ public static void main(String[] args)
+ {
+ var_bad++;
+
+ try {
+ for (int i = 0; i < 10; i++) (new byte[((byte)-1 << i)])[0] = 0;
+ }
+ catch (Exception e) { System.out.println("Got " + e); }
+
+ System.out.println("Test.var_bad = " + var_bad + " (expected 2)\n");
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6800154/Test6800154.java Fri Feb 20 10:53:39 2009 -0800
@@ -0,0 +1,109 @@
+/*
+ * 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 6800154
+ * @summary Add comments to long_by_long_mulhi() for better understandability
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6800154.divcomp Test6800154
+ */
+
+import java.net.URLClassLoader;
+
+public class Test6800154 implements Runnable {
+ static final long[] DIVIDENDS = {
+ 0,
+ 1,
+ 2,
+ 1423487,
+ 4444441,
+ 4918923241323L,
+ -1,
+ -24351,
+ 0x3333,
+ 0x0000000080000000L,
+ 0x7fffffffffffffffL,
+ 0x8000000000000000L
+ };
+
+ static final long[] DIVISORS = {
+ 1,
+ 2,
+ 17,
+ 12342,
+ 24123,
+ 143444,
+ 123444442344L,
+ -1,
+ -2,
+ -4423423234231423L,
+ 0x0000000080000000L,
+ 0x7fffffffffffffffL,
+ 0x8000000000000000L
+ };
+
+ // Initialize DIVISOR so that it is final in this class.
+ static final long DIVISOR;
+
+ static {
+ long value = 0;
+ try {
+ value = Long.decode(System.getProperty("divisor"));
+ } catch (Throwable e) {
+ }
+ DIVISOR = value;
+ }
+
+ public static void main(String[] args) throws Exception
+ {
+ Class cl = Class.forName("Test6800154");
+ URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
+
+ // Iterate over all divisors.
+ for (int i = 0; i < DIVISORS.length; i++) {
+ System.setProperty("divisor", "" + DIVISORS[i]);
+ ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
+ Class c = loader.loadClass("Test6800154");
+ Runnable r = (Runnable) c.newInstance();
+ r.run();
+ }
+ }
+
+ public void run()
+ {
+ // Iterate over all dividends.
+ for (int i = 0; i < DIVIDENDS.length; i++) {
+ long dividend = DIVIDENDS[i];
+
+ long expected = divint(dividend);
+ long result = divcomp(dividend);
+
+ if (result != expected)
+ throw new InternalError(dividend + " / " + DIVISOR + " failed: " + result + " != " + expected);
+ }
+ }
+
+ static long divint(long a) { return a / DIVISOR; }
+ static long divcomp(long a) { return a / DIVISOR; }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/6805724/Test6805724.java Fri Feb 20 10:53:39 2009 -0800
@@ -0,0 +1,80 @@
+/*
+ * 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 6805724
+ * @summary ModLNode::Ideal() generates functionally incorrect graph when divisor is any (2^k-1) constant.
+ *
+ * @run main/othervm -Xcomp -XX:CompileOnly=Test6805724.fcomp Test6805724
+ */
+
+import java.net.URLClassLoader;
+
+public class Test6805724 implements Runnable {
+ // Initialize DIVISOR so that it is final in this class.
+ static final long DIVISOR; // 2^k-1 constant
+
+ static {
+ long value = 0;
+ try {
+ value = Long.decode(System.getProperty("divisor"));
+ } catch (Throwable t) {
+ // This one is required for the Class.forName() in main.
+ }
+ DIVISOR = value;
+ }
+
+ static long fint(long x) {
+ return x % DIVISOR;
+ }
+
+ static long fcomp(long x) {
+ return x % DIVISOR;
+ }
+
+ public void run() {
+ long a = 0x617981E1L;
+
+ long expected = fint(a);
+ long result = fcomp(a);
+
+ if (result != expected)
+ throw new InternalError(result + " != " + expected);
+ }
+
+ public static void main(String args[]) throws Exception {
+ Class cl = Class.forName("Test6805724");
+ URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
+
+ // Iterate over all 2^k-1 divisors.
+ for (int k = 1; k < Long.SIZE; k++) {
+ long divisor = (1L << k) - 1;
+ System.setProperty("divisor", "" + divisor);
+ ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
+ Class c = loader.loadClass("Test6805724");
+ Runnable r = (Runnable) c.newInstance();
+ r.run();
+ }
+ }
+}
--- a/jaxp/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/jaxp/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
b203df0741af3eb08687bc5eb798bac87363758d jdk7-b44
0f113667880d335cfa2c35721b1b45144fb757f5 jdk7-b45
b2271877894af809b7703767fe8d4e38591a02a2 jdk7-b46
+d711ad1954b294957737ea386cfd4d3c05028a36 jdk7-b47
+39de90eb4822cafaacc69edd67ab5547e55ae920 jdk7-b48
--- a/jaxws/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/jaxws/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
344485a03674b6950a7a23d01a6efb8055afb6ec jdk7-b44
dea7753d713936c5b6fd942a91811b0676537fd0 jdk7-b45
af4a3eeb7812a5d09a241c50b51b3c648a9d45c1 jdk7-b46
+223011570edbd49bb0fe51cdeb2089f95d305267 jdk7-b47
+01e5dd31d0c10a2db3d50db346905d2d3db45e88 jdk7-b48
--- a/jdk/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
d8eb2738db6b148911177d9bcfe888109b7f2f71 jdk7-b44
527b426497a259d0605d069e3930e838948531a6 jdk7-b45
4b03e27a44090d1f646af28dc58f9ead827e24c7 jdk7-b46
+b4ac413b1f129eeef0acab3f31081c1b7dfe3b27 jdk7-b47
+5fbd9ea7def17186693b6f7099b5d0dc73903eee jdk7-b48
--- a/jdk/make/sun/awt/FILES_c_windows.gmk Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/sun/awt/FILES_c_windows.gmk Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/sun/awt/Makefile Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/sun/awt/make.depend Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/sun/jawt/make.depend Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/sun/splashscreen/Makefile Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/sun/xawt/mapfile-vers Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/tools/sharing/classlist.linux Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/tools/sharing/classlist.solaris Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/make/tools/sharing/classlist.windows Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Choice.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Component.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Container.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Dialog.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/EventDispatchThread.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/List.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/MenuItem.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Robot.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/TextArea.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/TextField.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Toolkit.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/Window.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/doc-files/DesktopProperties.html Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/event/InputEvent.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/event/MouseEvent.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ButtonPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/CanvasPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/CheckboxMenuItemPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/CheckboxPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ChoicePeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ContainerPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/DesktopPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/DialogPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/FileDialogPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/FontPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/FramePeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/LabelPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ListPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuBarPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuComponentPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuItemPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/MenuPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/PanelPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/PopupMenuPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/RobotPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ScrollPanePeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/ScrollbarPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/SystemTrayPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/TextComponentPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/TextFieldPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/TrayIconPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/java/awt/peer/WindowPeer.java Fri Feb 20 10:53:39 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/javax/swing/JRootPane.java Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/javax/swing/JRootPane.java Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/sun/awt/HeadlessToolkit.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/sun/awt/SunToolkit.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/share/classes/sun/java2d/pipe/Region.java Fri Feb 20 10:53:39 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/solaris/classes/sun/awt/X11/WindowDimensions.java Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/WindowDimensions.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XConstants.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XKeysym.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XRobotPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/keysym2ucs.h Fri Feb 20 10:53:39 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/sun/awt/awt_Robot.c Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/native/sun/awt/awt_Robot.c Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/solaris/native/sun/xawt/XlibWrapper.c Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WInputMethod.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WRobotPeer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/classes/sun/awt/windows/WToolkit.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/awt/splashscreen/splashscreen_sys.c Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/ComCtl32Util.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/Devices.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/Devices.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/GDIHashtable.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/GDIHashtable.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/ShellFolder2.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/WPrinterJob.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Button.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Checkbox.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Choice.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Color.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Component.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Component.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Cursor.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Cursor.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_DataTransferer.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Desktop.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Dialog.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_DnDDT.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_FileDialog.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_FileDialog.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Font.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Font.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Frame.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_InputMethod.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_List.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_MenuItem.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Object.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Palette.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_PrintControl.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_PrintJob.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Robot.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Robot.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextComponent.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextComponent.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TextField.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Toolkit.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awt_Window.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/awtmsg.h Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/src/windows/native/sun/windows/jawt.cpp Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/test/java/awt/Mixing/OpaqueTest.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/jdk/test/java/awt/Mixing/OverlappingButtons.java Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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.");
+ }
+}
--- a/langtools/.hgtags Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/.hgtags Fri Feb 20 10:53:39 2009 -0800
@@ -21,3 +21,5 @@
28f0b10d6c1afc106465c13b8c663a6afa4fb1a1 jdk7-b44
30db5e0aaf83fe262d9a7227d3fc3e451cd5d459 jdk7-b45
be546a6c08e3c31fba2edcae1de43ae3515d2e59 jdk7-b46
+2b8f6bab23926aa32b9cf7e4c540b9d1ce74b7d5 jdk7-b47
+c53007f34195f69223bdd4125ec6c0740f7d6736 jdk7-b48
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/Main.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/javac.properties Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/DocletInvoker.java Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/javax/lang/model/element/UnknownElementException.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/src/share/classes/javax/lang/model/type/UnknownTypeException.java Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/test/tools/javac/6304921/T6304921.out Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/test/tools/javac/6758789/T6758789b.out Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/test/tools/javac/T6241723.out Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/test/tools/javac/depDocComment/DeprecatedDocComment.out Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 13:05:28 2009 +0800
+++ b/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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 Fri Feb 20 10:53:39 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;
+ }
+}