diff --git a/limelight-pc/.classpath b/limelight-pc/.classpath index 9d56b7c..11be63e 100644 --- a/limelight-pc/.classpath +++ b/limelight-pc/.classpath @@ -3,7 +3,7 @@ - + diff --git a/limelight-pc/src/com/limelight/gui/StreamFrame.java b/limelight-pc/src/com/limelight/gui/StreamFrame.java index f03cb2c..70bb66f 100644 --- a/limelight-pc/src/com/limelight/gui/StreamFrame.java +++ b/limelight-pc/src/com/limelight/gui/StreamFrame.java @@ -11,6 +11,8 @@ import java.awt.GraphicsEnvironment; import java.awt.Point; import java.awt.Toolkit; import java.awt.image.BufferedImage; +import java.util.Arrays; +import java.util.Comparator; import javax.swing.Box; import javax.swing.BoxLayout; @@ -74,6 +76,28 @@ public class StreamFrame extends JFrame { hideCursor(); this.setVisible(true); } + + private DisplayMode getBestDisplay(DisplayMode[] configs) { + Arrays.sort(configs, new Comparator() { + @Override + public int compare(DisplayMode o1, DisplayMode o2) { + if (o1.getWidth() > o2.getWidth()) { + return -1; + } else if (o2.getWidth() > o1.getWidth()) { + return 1; + } else { + return 0; + } + } + }); + DisplayMode bestConfig = null; + for (DisplayMode config : configs) { + if (config.getWidth() >= 1280 && config.getHeight() >= 720) { + bestConfig = config; + } + } + return bestConfig; + } private void makeFullScreen() { GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); @@ -82,20 +106,22 @@ public class StreamFrame extends JFrame { gd.setFullScreenWindow(this); if (gd.isDisplayChangeSupported()) { - DisplayMode[] configs = gd.getDisplayModes(); - for (DisplayMode config : configs) { - if (config.getWidth() == 1280 && config.getHeight() == 720 || - config.getWidth() == 1280 && config.getHeight() == 800) { - gd.setDisplayMode(config); - break; - } + DisplayMode config = getBestDisplay(gd.getDisplayModes()); + if (config != null) { + gd.setDisplayMode(config); + } else { + JOptionPane.showMessageDialog( + this, + "Your display does not support a resolution greater than 1280x720", + "No Supported Resolution", + JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog( this, "Unable to change display resolution. \nThis may not be the correct resolution", "Display Resolution", - JOptionPane.INFORMATION_MESSAGE); + JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(