|
From: <ls...@us...> - 2007-07-26 12:54:23
|
Revision: 3368
http://jnode.svn.sourceforge.net/jnode/?rev=3368&view=rev
Author: lsantha
Date: 2007-07-26 05:54:20 -0700 (Thu, 26 Jul 2007)
Log Message:
-----------
Progress with isolates.
Modified Paths:
--------------
trunk/core/src/driver/org/jnode/driver/console/textscreen/TextScreenConsole.java
Modified: trunk/core/src/driver/org/jnode/driver/console/textscreen/TextScreenConsole.java
===================================================================
--- trunk/core/src/driver/org/jnode/driver/console/textscreen/TextScreenConsole.java 2007-07-26 12:53:43 UTC (rev 3367)
+++ trunk/core/src/driver/org/jnode/driver/console/textscreen/TextScreenConsole.java 2007-07-26 12:54:20 UTC (rev 3368)
@@ -31,6 +31,7 @@
import org.jnode.driver.console.spi.ConsoleOutputStream;
import org.jnode.driver.textscreen.TextScreen;
import org.jnode.system.event.FocusEvent;
+import org.jnode.vm.isolate.VmIsolate;
/**
* @author Ewout Prangsma (ep...@us...)
@@ -68,7 +69,9 @@
private final boolean claimSystemOutErrIn;
- /**
+ private VmIsolate myIsolate;
+
+ /**
* @param mgr
* @param name
* @param screen
@@ -84,7 +87,8 @@
this.savedErr = this.err = new PrintStream(new ConsoleOutputStream(
this, 0x04));
this.claimSystemOutErrIn = ((options & ConsoleManager.CreateOptions.NO_SYSTEM_OUT_ERR_IN) == 0);
- }
+ this.myIsolate = VmIsolate.currentIsolate();
+ }
/**
* Clear the console
@@ -320,13 +324,17 @@
super.focusGained(event);
syncScreen();
if (claimSystemOutErrIn) {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- System.setOut(savedOut);
- System.setErr(savedErr);
- return null;
- }
- });
+ myIsolate.invokeAndWait(new Runnable() {
+ public void run() {
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ System.setOut(savedOut);
+ System.setErr(savedErr);
+ return null;
+ }
+ });
+ }
+ });
}
}
@@ -335,8 +343,12 @@
*/
public void focusLost(FocusEvent event) {
if (claimSystemOutErrIn) {
- savedOut = System.out;
- savedErr = System.err;
+ myIsolate.invokeAndWait(new Runnable() {
+ public void run() {
+ savedOut = System.out;
+ savedErr = System.err;
+ }
+ });
}
super.focusLost(event);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|