diff --git a/app/src/processing/mode/java/JavaEditor.java b/app/src/processing/mode/java/JavaEditor.java index 2b85e99ab..89738e852 100644 --- a/app/src/processing/mode/java/JavaEditor.java +++ b/app/src/processing/mode/java/JavaEditor.java @@ -478,7 +478,8 @@ public class JavaEditor extends Editor { public void run() { prepareRun(); try { - jmode.handleRun(sketch, JavaEditor.this); + runtime = jmode.handleRun(sketch, JavaEditor.this); +// System.out.println("runtime now " + runtime); } catch (Exception e) { statusError(e); } @@ -494,7 +495,7 @@ public class JavaEditor extends Editor { public void run() { prepareRun(); try { - jmode.handlePresent(sketch, JavaEditor.this); + runtime = jmode.handlePresent(sketch, JavaEditor.this); } catch (Exception e) { statusError(e); } @@ -510,7 +511,9 @@ public class JavaEditor extends Editor { //jmode.handleStop(); if (runtime != null) { runtime.close(); // kills the window - runtime = null; // will this help? + runtime = null; +// } else { +// System.out.println("runtime is null"); } } catch (Exception e) { statusError(e); diff --git a/app/src/processing/mode/java/JavaMode.java b/app/src/processing/mode/java/JavaMode.java index a1da853a9..b80e03091 100644 --- a/app/src/processing/mode/java/JavaMode.java +++ b/app/src/processing/mode/java/JavaMode.java @@ -172,26 +172,34 @@ public class JavaMode extends Mode { public Runner handleRun(Sketch sketch, RunnerListener listener) throws SketchException { - Runner runtime = null; JavaBuild build = new JavaBuild(sketch); String appletClassName = build.build(); if (appletClassName != null) { - runtime = new Runner(build, listener); - runtime.launch(false); + final Runner runtime = new Runner(build, listener); + new Thread(new Runnable() { + public void run() { + runtime.launch(false); // this blocks until finished + } + }).start(); + return runtime; } - return runtime; + return null; } public Runner handlePresent(Sketch sketch, RunnerListener listener) throws SketchException { - Runner runtime = null; JavaBuild build = new JavaBuild(sketch); String appletClassName = build.build(); if (appletClassName != null) { - runtime = new Runner(build, listener); - runtime.launch(true); + final Runner runtime = new Runner(build, listener); + new Thread(new Runnable() { + public void run() { + runtime.launch(true); + } + }).start(); + return runtime; } - return runtime; + return null; } diff --git a/todo.txt b/todo.txt index a89925d78..ae9bf626b 100644 --- a/todo.txt +++ b/todo.txt @@ -16,6 +16,8 @@ o http://dev.processing.org/bugs/show_bug.cgi?id=20 X http://code.google.com/p/processing/issues/detail?id=9 X shift-indent without selection increases indention X http://code.google.com/p/processing/issues/detail?id=458 +X Running a sketch destroys other running PApplets +X http://code.google.com/p/processing/issues/detail?id=567 _ allow more than one sketch to run at a time _ help casey re-export all applets for the site