You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(134) |
Sep
(52) |
Oct
(13) |
Nov
(342) |
Dec
(163) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(44) |
Feb
(62) |
Mar
(158) |
Apr
(38) |
May
(70) |
Jun
(58) |
Jul
(104) |
Aug
(207) |
Sep
(83) |
Oct
(122) |
Nov
(23) |
Dec
(49) |
| 2004 |
Jan
(119) |
Feb
(132) |
Mar
(192) |
Apr
(140) |
May
(77) |
Jun
(74) |
Jul
(201) |
Aug
(63) |
Sep
(102) |
Oct
(70) |
Nov
(173) |
Dec
(78) |
| 2005 |
Jan
(174) |
Feb
(197) |
Mar
(105) |
Apr
(59) |
May
(77) |
Jun
(43) |
Jul
(21) |
Aug
(18) |
Sep
(47) |
Oct
(37) |
Nov
(74) |
Dec
(50) |
| 2006 |
Jan
(44) |
Feb
(19) |
Mar
(32) |
Apr
(24) |
May
(31) |
Jun
(55) |
Jul
(138) |
Aug
(28) |
Sep
(12) |
Oct
(41) |
Nov
(58) |
Dec
(24) |
| 2007 |
Jan
(28) |
Feb
(14) |
Mar
(10) |
Apr
(68) |
May
(30) |
Jun
(26) |
Jul
(18) |
Aug
(63) |
Sep
(19) |
Oct
(29) |
Nov
(20) |
Dec
(10) |
| 2008 |
Jan
(38) |
Feb
(7) |
Mar
(37) |
Apr
(120) |
May
(41) |
Jun
(36) |
Jul
(39) |
Aug
(24) |
Sep
(28) |
Oct
(30) |
Nov
(36) |
Dec
(75) |
| 2009 |
Jan
(46) |
Feb
(22) |
Mar
(50) |
Apr
(70) |
May
(134) |
Jun
(105) |
Jul
(75) |
Aug
(34) |
Sep
(38) |
Oct
(34) |
Nov
(19) |
Dec
(20) |
| 2010 |
Jan
(11) |
Feb
(20) |
Mar
(65) |
Apr
(83) |
May
(104) |
Jun
(73) |
Jul
(78) |
Aug
(57) |
Sep
(43) |
Oct
(35) |
Nov
(9) |
Dec
(4) |
| 2011 |
Jan
(21) |
Feb
(11) |
Mar
(18) |
Apr
(10) |
May
(18) |
Jun
(15) |
Jul
(48) |
Aug
(25) |
Sep
(17) |
Oct
(45) |
Nov
(15) |
Dec
(12) |
| 2012 |
Jan
(21) |
Feb
(9) |
Mar
(12) |
Apr
(9) |
May
(9) |
Jun
(5) |
Jul
(1) |
Aug
(10) |
Sep
(12) |
Oct
(1) |
Nov
(28) |
Dec
(5) |
| 2013 |
Jan
(4) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(2) |
2
(1) |
3
(2) |
4
(1) |
5
|
6
(4) |
|
7
(2) |
8
(3) |
9
(1) |
10
(1) |
11
(1) |
12
(6) |
13
(1) |
|
14
(2) |
15
|
16
(3) |
17
(3) |
18
(1) |
19
(1) |
20
(1) |
|
21
|
22
(1) |
23
(2) |
24
(1) |
25
|
26
(8) |
27
(4) |
|
28
(2) |
29
(3) |
30
(2) |
31
(6) |
|
|
|
|
From: <ma...@us...> - 2010-03-08 21:29:43
|
Revision: 3278
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3278&view=rev
Author: matzon
Date: 2010-03-08 21:29:32 +0000 (Mon, 08 Mar 2010)
Log Message:
-----------
added new XRandR stuff
fixed credits doc a bit
Modified Paths:
--------------
trunk/LWJGL/doc/CREDITS
trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java
Added Paths:
-----------
trunk/LWJGL/src/java/org/lwjgl/opengl/XRandR.java
Modified: trunk/LWJGL/doc/CREDITS
===================================================================
--- trunk/LWJGL/doc/CREDITS 2010-02-21 21:27:35 UTC (rev 3277)
+++ trunk/LWJGL/doc/CREDITS 2010-03-08 21:29:32 UTC (rev 3278)
@@ -1,11 +1,8 @@
The following people have helped to make this project what it is today:
-active developers:
- Caspian Rychlik-Prince <cp...@sh...>
- Brian Matzon <br...@ma...>
- Elias Naur <eli...@gm...>
- Ioannis Tsakpinis <sp...@us...>
-
-contributors:
- Niels J\xF8rgensen <nj...@ni...>
- Tristan Campbell <tr...@ha...>
- Gregory Pierce <gre...@ya...>
@@ -16,6 +13,8 @@
- Kevin Glass <ke...@co...>
- Atsuya Takagi
- kappaOne
+ - Simon Felix
+ - Ryan McNally
additional credits goes to:
- Joseph I. Valenzuela [OpenAL stuff]
@@ -26,6 +25,7 @@
- OpenAL, Creative Labs - http://openal.org/
- jinput, Sun - https://jinput.dev.java.net/
- lzma, p7zip - http://p7zip.sourceforge.net/
+ - JOGL, Sun - http://kenai.com/projects/jogl/pages/Home
Please see the /doc/3rdparty/ directory for licenses.
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2010-02-21 21:27:35 UTC (rev 3277)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2010-03-08 21:29:32 UTC (rev 3278)
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002-2008 LWJGL Project
+ * Copyright (c) 2002-2010 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,17 +38,15 @@
* @author elias_naur
*/
+import java.awt.Canvas;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
-import java.awt.Canvas;
-import java.awt.event.FocusListener;
-import java.awt.event.FocusEvent;
-
import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException;
import org.lwjgl.LWJGLUtil;
+import org.lwjgl.opengl.XRandR.Screen;
final class LinuxDisplay implements DisplayImplementation {
/* X11 constants */
@@ -113,6 +111,8 @@
/** Saved mode to restore with */
private DisplayMode saved_mode;
private DisplayMode current_mode;
+
+ private Screen[] savedXrandrConfig;
private boolean keyboard_grabbed;
private boolean pointer_grabbed;
@@ -522,7 +522,14 @@
public void resetDisplayMode() {
lockAWT();
try {
- switchDisplayMode(saved_mode);
+ if( current_displaymode_extension == XRANDR && savedXrandrConfig.length > 0 )
+ {
+ XRandR.setConfiguration( savedXrandrConfig );
+ }
+ else
+ {
+ switchDisplayMode(saved_mode);
+ }
if (isXF86VidModeSupported())
doSetGamma(saved_gamma);
} catch (LWJGLException e) {
@@ -608,6 +615,7 @@
throw new LWJGLException("No modes available");
switch (current_displaymode_extension) {
case XRANDR:
+ savedXrandrConfig = XRandR.getConfiguration();
saved_mode = getCurrentXRandrMode();
break;
case XF86VIDMODE:
@@ -880,7 +888,14 @@
if (current_window_mode == FULLSCREEN_NETWM) {
nIconifyWindow(getDisplay(), getWindow(), getDefaultScreen());
try {
- switchDisplayModeOnTmpDisplay(saved_mode);
+ if( current_displaymode_extension == XRANDR && savedXrandrConfig.length > 0 )
+ {
+ XRandR.setConfiguration( savedXrandrConfig );
+ }
+ else
+ {
+ switchDisplayModeOnTmpDisplay(saved_mode);
+ }
setGammaRampOnTmpDisplay(saved_gamma);
} catch (LWJGLException e) {
LWJGLUtil.log("Failed to restore saved mode: " + e.getMessage());
Added: trunk/LWJGL/src/java/org/lwjgl/opengl/XRandR.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/XRandR.java (rev 0)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/XRandR.java 2010-03-08 21:29:32 UTC (rev 3278)
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2002-2010 LWJGL Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.lwjgl.opengl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * Utility for working with the xrandr commmand-line utility. Assumes
+ * xrandr v1.2 or higher.
+ *
+ * @author ryanm
+ */
+public class XRandR {
+
+ private static Screen[] current;
+
+ private static Map /* <String, Screen[]> */screens;
+
+ private static void populate() {
+ if (screens == null) {
+ screens = new HashMap/* <String, Screen[]> */();
+
+ // ProcessBuilder pb = new ProcessBuilder( "xrandr", "-q" );
+ // pb.redirectErrorStream();
+ try {
+ // Process p= pb.start();
+ Process p = Runtime.getRuntime().exec(new String[] { "xrandr", "-q"});
+
+ List/* <Screen> */currentList = new ArrayList/* <Screen> */();
+ List/* <Screen> */possibles = new ArrayList/* <Screen> */();
+ String name = null;
+
+ BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line;
+ while ((line = br.readLine()) != null) {
+ line = line.trim();
+ String[] sa = line.split("\\s+");
+
+ if (sa[1].equals("connected")) {
+ // found a new screen block
+ if (name != null) {
+ screens.put(name, possibles.toArray(new Screen[possibles.size()]));
+ possibles.clear();
+ }
+ name = sa[0];
+
+ // record the current config
+ currentList.add(new Screen(name, sa[2]));
+ } else if (Pattern.matches("\\d*x\\d*", sa[0])) {
+ // found a new mode line
+ possibles.add(new Screen(name, sa[0]));
+ }
+ }
+
+ screens.put(name, possibles.toArray(new Screen[possibles.size()]));
+
+ current = (Screen[]) currentList.toArray(new Screen[currentList.size()]);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * @return The current screen configuration, or an empty array if
+ * xrandr is not supported
+ */
+ public static Screen[] getConfiguration() {
+ populate();
+
+ return (Screen[]) current.clone();
+ }
+
+ /**
+ * @param screens
+ * The desired screen set, may not be <code>null</code>
+ */
+ public static void setConfiguration(Screen[]/* ... */screens) {
+ if (screens.length == 0) {
+ throw new IllegalArgumentException("Must specify at least one screen");
+ }
+
+ List/* <String> */cmd = new ArrayList/* <String> */();
+ cmd.add("xrandr");
+
+ // switch off those in the current set not in the new set
+ for (int i = 0; i < current.length; i++) {
+ boolean found = false;
+ for (int j = 0; j < screens.length; j++) {
+ if (screens[j].name.equals(current[i].name)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ cmd.add("--output");
+ cmd.add(current[i].name);
+ cmd.add("--off");
+ }
+ }
+
+ // set up new set
+ for (int i = 0; i < screens.length; i++) {
+ screens[i].getArgs(cmd);
+ }
+
+ try {
+ // ProcessBuilder pb = new ProcessBuilder( cmd );
+ // pb.redirectErrorStream();
+ // Process p = pb.start();
+ Process p = Runtime.getRuntime().exec((String[]) cmd.toArray(new String[cmd.size()]));
+ // no output is expected, but check anyway
+ BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line;
+ while ((line = br.readLine()) != null) {
+ System.out.println(line);
+ }
+ current = screens;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * @return the name of connected screens, or an empty array if
+ * xrandr is not supported
+ */
+ public static String[] getScreenNames() {
+ populate();
+ return (String[]) screens.keySet().toArray(new String[screens.size()]);
+ }
+
+ /**
+ * @param name
+ * @return the possible resolutions of the named screen, or
+ * <code>null</code> if there is no such screen
+ */
+ public static Screen[] getResolutions(String name) {
+ populate();
+ // clone the array to prevent held copies being altered
+ return (Screen[]) ((Screen[]) screens.get(name)).clone();
+ }
+
+ /**
+ * Encapsulates the configuration of a monitor. Resolution is
+ * fixed, position is mutable
+ *
+ * @author ryanm
+ */
+ public static class Screen implements Cloneable {
+
+ /**
+ * Name for this output
+ */
+ public final String name;
+
+ /**
+ * Width in pixels
+ */
+ public final int width;
+
+ /**
+ * Height in pixels
+ */
+ public final int height;
+
+ /**
+ * Position on the x-axis, in pixels
+ */
+ public int xPos = 0;
+
+ /**
+ * Position on the y-axis, in pixels
+ */
+ public int yPos = 0;
+
+ /**
+ * @param name
+ * name of the screen
+ * @param conf
+ * config string, format either widthxheight or
+ * widthxheight+xPos+yPos
+ */
+ private Screen(String name, String conf) {
+ this.name = name;
+
+ String[] sa = conf.split("\\D");
+ width = Integer.parseInt(sa[0]);
+ height = Integer.parseInt(sa[1]);
+
+ if (sa.length > 2) {
+ xPos = Integer.parseInt(sa[2]);
+ yPos = Integer.parseInt(sa[3]);
+ }
+ }
+
+ private void getArgs(List/* <String> */argList) {
+ argList.add("--output");
+ argList.add(name);
+ argList.add("--mode");
+ argList.add(width + "x" + height);
+ argList.add("--pos");
+ argList.add(xPos + "x" + yPos);
+ }
+
+ // @Override
+ public String toString() {
+ return name + " " + width + "x" + height + " @ " + xPos + "x" + yPos;
+ }
+ }
+}
Property changes on: trunk/LWJGL/src/java/org/lwjgl/opengl/XRandR.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|