<Swing Dev> [PATCH] Make RepaintManager more portable
Roman Kennke
roman.kennke at aicas.com
Tue Sep 16 08:54:01 UTC 2008
Hello,
The attached patch fixes two problems in RepaintManager. The first one
is a direct cast from Toolkit to SunToolkit, without checking for the
actual type, the second is using a SunToolkit static method without
checking if we are actually using a SunToolkit. This makes it impossible
to use a non-SunToolkit as AWT backend. The solution in the first case
is to check for SunToolkit (of course) and in the 2nd case to also check
for SunToolkit, and using a different method to post event to the EQ.
This patch was developed as part of the Caciocavallo project and it
would be good to have it merged it into mainline. What do you think?
/Roman
--
Dipl.-Inform. (FH) Roman Kennke, Software Engineer, http://kennke.org
aicas Allerton Interworks Computer Automated Systems GmbH
Haid-und-Neu-Straße 18 * D-76131 Karlsruhe * Germany
http://www.aicas.com * Tel: +49-721-663 968-48
USt-Id: DE216375633, Handelsregister HRB 109481, AG Karlsruhe
Geschäftsführer: Dr. James J. Hunt
-------------- next part --------------
# HG changeset patch
# User Mario Torre <mario.torre at aicas.com>
# Date 1217450571 -7200
# Node ID 87fd234ed5ab0bac1ffa8731e80ded5830aa1684
# Parent 9af1670d56ecb4d3e49a21c9389c390e4c9e003f
imported patch RepaintManager.patch
diff -r 9af1670d56ec -r 87fd234ed5ab src/share/classes/javax/swing/RepaintManager.java
--- a/src/share/classes/javax/swing/RepaintManager.java Wed Jul 30 22:42:51 2008 +0200
+++ b/src/share/classes/javax/swing/RepaintManager.java Wed Jul 30 22:42:51 2008 +0200
@@ -1261,9 +1261,12 @@
if (doubleBufferingEnabled && !nativeDoubleBuffering) {
switch (bufferStrategyType) {
case BUFFER_STRATEGY_NOT_SPECIFIED:
- if (((SunToolkit)Toolkit.getDefaultToolkit()).
- useBufferPerWindow()) {
- paintManager = new BufferStrategyPaintManager();
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ if (tk instanceof SunToolkit) {
+ SunToolkit stk = (SunToolkit) tk;
+ if (stk.useBufferPerWindow()) {
+ paintManager = new BufferStrategyPaintManager();
+ }
}
break;
case BUFFER_STRATEGY_SPECIFIED_ON:
@@ -1285,9 +1288,16 @@
private void scheduleProcessingRunnable(AppContext context) {
if (processingRunnable.markPending()) {
- SunToolkit.getSystemEventQueueImplPP(context).
- postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(),
- processingRunnable));
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ if (tk instanceof SunToolkit) {
+ SunToolkit.getSystemEventQueueImplPP(context).
+ postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(),
+ processingRunnable));
+ } else {
+ Toolkit.getDefaultToolkit().getSystemEventQueue().
+ postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(),
+ processingRunnable));
+ }
}
}
More information about the swing-dev
mailing list