From d44b60fe9173cf6e3a135d0aaf392a1a277dbb46 Mon Sep 17 00:00:00 2001 From: Claus Wilke Date: Fri, 13 Jul 2018 23:45:40 +0200 Subject: [PATCH] Don't create a new graphics device on exit in ggsave(). Closes #2363. --- NEWS.md | 3 +++ R/save.r | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 19cdf00f9b..aa99d1d8fe 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,9 @@ * Data is no longer internally reordered when faceting. This makes it safer to feed data columns into `aes()` or into parameters of geoms or stats. However, doing so remains discouraged (@clauswilke). + +* `ggsave()` now exits without creating a new graphics device if previously + none was open (@clauswilke, #2363). # ggplot2 3.0.0 diff --git a/R/save.r b/R/save.r index b31fd4d5e3..4b15eddc6a 100644 --- a/R/save.r +++ b/R/save.r @@ -58,7 +58,7 @@ ggsave <- function(filename, plot = last_plot(), dev(filename = filename, width = dim[1], height = dim[2], ...) on.exit(utils::capture.output({ grDevices::dev.off() - grDevices::dev.set(old_dev) + if (old_dev > 1) grDevices::dev.set(old_dev) # restore old device unless null device })) grid.draw(plot)