From 6e8713e25c12f0a7212e22ef5ccd6fa2d8ad93ae Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 30 Jun 2015 17:23:38 +0300 Subject: [PATCH] Wallpaper: do not eat cpu cycles if not configured --- .../intellij/openapi/wm/impl/IdeBackgroundUtil.java | 4 ++-- .../com/intellij/openapi/wm/impl/PaintersHelper.java | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeBackgroundUtil.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeBackgroundUtil.java index 021e7e76a3eb..2a1607e3655c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeBackgroundUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeBackgroundUtil.java @@ -57,11 +57,11 @@ public class IdeBackgroundUtil { } public static void initEditorPainters(@NotNull PaintersHelper painters) { - painters.addPainter(PaintersHelper.newWallpaperPainter("idea.wallpaper.editor"), null); + PaintersHelper.initWallpaperPainter("idea.wallpaper.editor", painters); } public static void initFramePainters(@NotNull PaintersHelper painters) { - painters.addPainter(PaintersHelper.newWallpaperPainter("idea.wallpaper.ide"), null); + PaintersHelper.initWallpaperPainter("idea.wallpaper.ide", painters); ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); String path = UIUtil.isUnderDarcula()? appInfo.getEditorBackgroundImageUrl() : null; diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/PaintersHelper.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/PaintersHelper.java index 264d9d6c71fb..dc56e5fa9715 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/PaintersHelper.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/PaintersHelper.java @@ -120,7 +120,17 @@ final class PaintersHelper implements Painter.Listener { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT } - public static AbstractPainter newWallpaperPainter(final String propertyName) { + public static void initWallpaperPainter(@NotNull String propertyName, @NotNull PaintersHelper painters) { + String value = System.getProperty(propertyName); + if (value == null && !new File(PathManager.getConfigPath(), propertyName + ".png").exists()) { + // property not set & there's no default + return; + } + ImagePainter painter = (ImagePainter)newWallpaperPainter(propertyName); + painters.addPainter(painter, null); + } + + private static AbstractPainter newWallpaperPainter(@NotNull final String propertyName) { return new ImagePainter() { Image image; float alpha;