From 345a0de63b370ed1574b596c182bc4d2141bc4b5 Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Mon, 12 Jun 2017 17:19:55 +0200 Subject: [PATCH] FastR grid: check AWT support option before creating AWT based devices. --- .../truffle/r/library/fastrGrid/GridContext.java | 16 +++++++++++----- .../fastrGrid/graphics/RGridGraphicsAdapter.java | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridContext.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridContext.java index 9b4b963429..4bd48a15a7 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridContext.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/GridContext.java @@ -96,18 +96,18 @@ public final class GridContext { public void openDefaultDevice() { String defaultDev = RGridGraphicsAdapter.getDefaultDevice(); if (defaultDev.equals("awt") || defaultDev.startsWith("X11")) { - if (!FastRConfig.InternalGridAwtSupport) { - throw awtNotSupported(); - } else { - setCurrentDevice(defaultDev, WindowDevice.createWindowDevice()); - } + ensureAwtSupport(); + setCurrentDevice(defaultDev, WindowDevice.createWindowDevice()); } else if (defaultDev.equals("svg")) { setCurrentDevice(defaultDev, new SVGDevice("Rplot.svg", GridDevice.DEFAULT_WIDTH, GridDevice.DEFAULT_HEIGHT)); } else if (defaultDev.equals("png")) { + ensureAwtSupport(); setCurrentDevice(defaultDev, safeOpenImageDev("Rplot.png", "png")); } else if (defaultDev.equals("bmp")) { + ensureAwtSupport(); setCurrentDevice(defaultDev, safeOpenImageDev("Rplot.bmp", "bmp")); } else if (defaultDev.equals("jpg") || defaultDev.equals("jpeg")) { + ensureAwtSupport(); setCurrentDevice("jpeg", safeOpenImageDev("Rplot.jpg", "jpeg")); } else { throw RError.error(RError.NO_CALLER, Message.GENERIC, "FastR does not support device '" + defaultDev + "'."); @@ -144,6 +144,12 @@ public final class GridContext { return RContext.getEngine().evalFunction(redrawAll, REnvironment.baseEnv().getFrame(), RCaller.topLevel, true, null, args); } + private static void ensureAwtSupport() { + if (!FastRConfig.InternalGridAwtSupport) { + throw awtNotSupported(); + } + } + private BufferedImageDevice safeOpenImageDev(String filename, String formatName) { try { return BufferedImageDevice.open(filename, formatName, GridDevice.DEFAULT_WIDTH, GridDevice.DEFAULT_HEIGHT); diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/graphics/RGridGraphicsAdapter.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/graphics/RGridGraphicsAdapter.java index bff8b3810f..d0f5518a6e 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/graphics/RGridGraphicsAdapter.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/fastrGrid/graphics/RGridGraphicsAdapter.java @@ -15,6 +15,7 @@ package com.oracle.truffle.r.library.fastrGrid.graphics; import com.oracle.truffle.r.library.fastrGrid.FastRGridExternalLookup; +import com.oracle.truffle.r.runtime.FastRConfig; import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RError.Message; import com.oracle.truffle.r.runtime.ROptions; @@ -70,7 +71,7 @@ public final class RGridGraphicsAdapter { if (options.getValue(DEFAULT_DEVICE_OPTION) != RNull.instance) { return; } - String defaultDevice = ctx.isInteractive() ? "awt" : "svg"; + String defaultDevice = (ctx.isInteractive() && FastRConfig.InternalGridAwtSupport) ? "awt" : "svg"; try { options.setValue(DEFAULT_DEVICE_OPTION, defaultDevice); } catch (OptionsException e) { -- GitLab