From 8f784c424cd5fe6c176911ece64583ac0c337991 Mon Sep 17 00:00:00 2001 From: kappa1 Date: Fri, 16 Apr 2010 19:06:53 +0000 Subject: [PATCH] minor tweak to XRandR class to add AccessControllers to remaining methods that need it. --- src/java/org/lwjgl/opengl/XRandR.java | 30 ++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/java/org/lwjgl/opengl/XRandR.java b/src/java/org/lwjgl/opengl/XRandR.java index d9876b9a..825b99ed 100644 --- a/src/java/org/lwjgl/opengl/XRandR.java +++ b/src/java/org/lwjgl/opengl/XRandR.java @@ -119,11 +119,20 @@ public class XRandR { * @param screens * The desired screen set, may not be null */ - public static void setConfiguration(Screen[]/* ... */screens) { + public static void setConfiguration(final Screen[]/* ... */screens) { if (screens.length == 0) { throw new IllegalArgumentException("Must specify at least one screen"); } - + + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + setScreen(screens); + return null; + } + }); + } + + private static void setScreen(Screen[] screens) { List/* */cmd = new ArrayList/* */(); cmd.add("xrandr"); @@ -164,7 +173,6 @@ public class XRandR { } catch (IOException e) { e.printStackTrace(); } - } /** @@ -172,7 +180,13 @@ public class XRandR { * xrandr is not supported */ public static String[] getScreenNames() { - populate(); + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + populate(); + return null; + } + }); + return (String[]) screens.keySet().toArray(new String[screens.size()]); } @@ -182,7 +196,13 @@ public class XRandR { * null if there is no such screen */ public static Screen[] getResolutions(String name) { - populate(); + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + populate(); + return null; + } + }); + // clone the array to prevent held copies being altered return (Screen[]) ((Screen[]) screens.get(name)).clone(); }