Skip to content

Commit 9d0e689

Browse files
Avoid lock when exporting the view in GUIWorkspace
1 parent 9300714 commit 9d0e689

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/main/scala/RecordView.scala

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.nlogo.extensions.vid
22

3+
import java.awt.image.BufferedImage
4+
35
import org.nlogo.core.Syntax
4-
import org.nlogo.api.{ Argument, Context, Command, ExtensionException }
6+
import org.nlogo.window.GUIWorkspace
7+
import org.nlogo.api.{ Argument, Context, Command, ExtensionException, ReporterRunnable }
58

69
class RecordView(recorder: Recorder) extends Command {
710

@@ -10,6 +13,13 @@ class RecordView(recorder: Recorder) extends Command {
1013
def perform(args: Array[Argument], context: Context): Unit = {
1114
if (! recorder.isRecording)
1215
throw new ExtensionException("vid: recorder not started")
13-
recorder.recordFrame(context.workspace.exportView)
16+
context.workspace match {
17+
case gw: GUIWorkspace =>
18+
val exportedView = gw.waitForResult(new ReporterRunnable[BufferedImage] {
19+
override def run(): BufferedImage = gw.exportView
20+
})
21+
recorder.recordFrame(exportedView)
22+
case _ => recorder.recordFrame(context.workspace.exportView)
23+
}
1424
}
1525
}

0 commit comments

Comments
 (0)