X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.acorn%2Fsrc%2Forg%2Fsimantics%2Facorn%2FMainProgram.java;h=450ad0618fe84445d68a39427a9095f464d8c81a;hb=f9b0a9c48dd040142414f8d3e7ac43b502d3e203;hp=78ff9e8995c4162fc347edc9b51bd6f7c69ec4ff;hpb=5930811a7911090a0c4984380c3b45ed81a93cde;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.acorn/src/org/simantics/acorn/MainProgram.java b/bundles/org.simantics.acorn/src/org/simantics/acorn/MainProgram.java index 78ff9e899..450ad0618 100644 --- a/bundles/org.simantics.acorn/src/org/simantics/acorn/MainProgram.java +++ b/bundles/org.simantics.acorn/src/org/simantics/acorn/MainProgram.java @@ -250,7 +250,27 @@ public class MainProgram implements Runnable, Closeable { deathBarrier.release(); } } + + static interface MainProgramRunnable { + + public void run() throws Exception; + public void done(); + + } + public Exception runIdle(MainProgramRunnable runnable) { + try { + mutex.acquire(); + runnable.run(); + return null; + } catch (Exception e) { + return e; + } finally { + runnable.done(); + mutex.release(); + } + } + /* * Mutex for streamLRU is assumed here *