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
|
3
|
4
|
5
|
6
|
7
|
|
8
|
9
|
10
(2) |
11
|
12
|
13
|
14
(1) |
|
15
|
16
|
17
|
18
(1) |
19
|
20
|
21
|
|
22
(3) |
23
|
24
|
25
|
26
(2) |
27
|
28
|
|
29
|
30
|
|
|
|
|
|
|
From: <jpi...@us...> - 2012-04-26 18:08:21
|
Revision: 3767
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3767&view=rev
Author: jpilgrim
Date: 2012-04-26 18:08:12 +0000 (Thu, 26 Apr 2012)
Log Message:
-----------
fixed problem with InfoView, also see https://bugs.eclipse.org/bugs/show_bug.cgi?id=367718
Modified Paths:
--------------
trunk/LWJGL/eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/LWJGLInfoView.java
Modified: trunk/LWJGL/eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/LWJGLInfoView.java
===================================================================
--- trunk/LWJGL/eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/LWJGLInfoView.java 2012-04-26 13:19:18 UTC (rev 3766)
+++ trunk/LWJGL/eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/LWJGLInfoView.java 2012-04-26 18:08:12 UTC (rev 3767)
@@ -21,6 +21,8 @@
import org.eclipse.core.runtime.IBundleGroupProvider;
import org.eclipse.core.runtime.Platform;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.opengl.GLCanvas;
+import org.eclipse.swt.opengl.GLData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
@@ -54,13 +56,23 @@
*/
@Override
public void createPartControl(Composite i_parent) {
-
- Text info = new Text(i_parent, SWT.READ_ONLY | SWT.LEFT | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL );
-
+
+ Text info = new Text(i_parent, SWT.READ_ONLY | SWT.LEFT | SWT.MULTI
+ | SWT.H_SCROLL | SWT.V_SCROLL);
+
+ GLCanvas canvas = new GLCanvas(i_parent, SWT.NONE, new GLData());
+ canvas.setCurrent();
+ try {
+ GLContext.useContext(canvas);
+ } catch (LWJGLException ex) {
+ // TODO Implement catch block for LWJGLException
+ ex.printStackTrace();
+ }
+
String infoString = gatherInformation();
info.setText(infoString);
}
-
+
static String getFeatureVersion(String myFeatureId) {
IBundleGroupProvider[] providers = Platform.getBundleGroupProviders();
if (providers != null) {
@@ -77,41 +89,36 @@
}
/**
+ * @param i_canvas
* @return
*/
- public static String gatherInformation() {
+ private static String gatherInformation() {
StringBuffer strb = new StringBuffer();
try {
- Display.setFullscreen(false);
- Display.create();
- } catch (LWJGLException ex) {
- warnNL(strb, "Error initializing OpenGL display: " + ex.getMessage());
- }
-
- try {
- infoNL(strb, "LWJGL feature version", getFeatureVersion("org.lwjgl"));
+ infoNL(strb, "LWJGL feature version",
+ getFeatureVersion("org.lwjgl"));
} catch (Exception ex) {
warnNL(strb, "Error retrieving feature version: " + ex.getMessage());
}
-
- infoNL(strb, "LWJGL version", Sys.getVersion() + (Sys.is64Bit() ? " (64bit)" : ""));
- infoNL(strb, "Java", System.getProperty("java.version"), System
- .getProperty("java.vendor"));
+ infoNL(strb, "LWJGL version", Sys.getVersion()
+ + (Sys.is64Bit() ? " (64bit)" : ""));
+
+ infoNL(strb, "Java", System.getProperty("java.version"),
+ System.getProperty("java.vendor"));
infoNL(strb, "Platform", LWJGLUtil.getPlatformName());
infoNL(strb, "Graphics card", Display.getAdapter());
infoNL(strb, "Driver version", Display.getVersion());
infoNL(strb, "OpenGL driver version", GL11.glGetString(GL11.GL_VERSION));
infoNL(strb, "GLU version", Registry.gluGetString(GLU.GLU_VERSION));
- infoNL(strb, "GLU extensions", Registry.gluGetString(GLU.GLU_EXTENSIONS));
-
-
-
+ infoNL(strb, "GLU extensions",
+ Registry.gluGetString(GLU.GLU_EXTENSIONS));
+
ContextCapabilities caps = GLContext.getCapabilities();
openGLVersions(strb, caps);
-
+
strb.append(NL).append("Capabilities").append(NL);
TreeMap<String, Boolean> capInfos = new TreeMap<String, Boolean>();
gatherCapabilities(caps, capInfos);
@@ -121,23 +128,37 @@
return strb.toString();
}
-
+
static void openGLVersions(StringBuffer strb, ContextCapabilities caps) {
StringBuffer versions = new StringBuffer();
- if (caps.OpenGL11) versions.append(", 1.1");
- if (caps.OpenGL12) versions.append(", 1.2");
- if (caps.OpenGL13) versions.append(", 1.3");
- if (caps.OpenGL14) versions.append(", 1.4");
- if (caps.OpenGL15) versions.append(", 1.5");
- if (caps.OpenGL20) versions.append(", 2.0");
- if (caps.OpenGL21) versions.append(", 2.1");
- if (caps.OpenGL30) versions.append(", 3.0");
- if (caps.OpenGL31) versions.append(", 3.1");
- if (caps.OpenGL32) versions.append(", 3.2");
- if (caps.OpenGL33) versions.append(", 3.3");
- if (caps.OpenGL40) versions.append(", 4.0");
- if (caps.OpenGL41) versions.append(", 4.1");
- if (strb.length()>2) versions.delete(0, 2);
+ if (caps.OpenGL11)
+ versions.append(", 1.1");
+ if (caps.OpenGL12)
+ versions.append(", 1.2");
+ if (caps.OpenGL13)
+ versions.append(", 1.3");
+ if (caps.OpenGL14)
+ versions.append(", 1.4");
+ if (caps.OpenGL15)
+ versions.append(", 1.5");
+ if (caps.OpenGL20)
+ versions.append(", 2.0");
+ if (caps.OpenGL21)
+ versions.append(", 2.1");
+ if (caps.OpenGL30)
+ versions.append(", 3.0");
+ if (caps.OpenGL31)
+ versions.append(", 3.1");
+ if (caps.OpenGL32)
+ versions.append(", 3.2");
+ if (caps.OpenGL33)
+ versions.append(", 3.3");
+ if (caps.OpenGL40)
+ versions.append(", 4.0");
+ if (caps.OpenGL41)
+ versions.append(", 4.1");
+ if (strb.length() > 2)
+ versions.delete(0, 2);
infoNL(strb, "Supported OpenGL versions", versions.toString());
}
@@ -178,7 +199,7 @@
if (groupInfosSupported.isEmpty()) {
infoNL(strb, title, "n.a.");
} else {
-
+
strb.append(title).append(": ");
for (int i = 0; i < TAB - title.length(); i++) {
strb.append(' ');
@@ -214,8 +235,7 @@
capInfos.put("AMD debug output", caps.GL_AMD_debug_output);
capInfos.put("AMD draw buffers blend", caps.GL_AMD_draw_buffers_blend);
capInfos.put("AMD name gen delete", caps.GL_AMD_name_gen_delete);
- capInfos
- .put("AMD performance monitor", caps.GL_AMD_performance_monitor);
+ capInfos.put("AMD performance monitor", caps.GL_AMD_performance_monitor);
capInfos.put("AMD seamless cubemap per texture",
caps.GL_AMD_seamless_cubemap_per_texture);
capInfos.put("AMD shader stencil export",
@@ -225,8 +245,7 @@
caps.GL_AMD_transform_feedback3_lines_triangles);
capInfos.put("AMD vertex shader tessellator",
caps.GL_AMD_vertex_shader_tessellator);
- capInfos
- .put("APPLE aux depth stencil", caps.GL_APPLE_aux_depth_stencil);
+ capInfos.put("APPLE aux depth stencil", caps.GL_APPLE_aux_depth_stencil);
capInfos.put("APPLE client storage", caps.GL_APPLE_client_storage);
capInfos.put("APPLE element array", caps.GL_APPLE_element_array);
capInfos.put("APPLE fence", caps.GL_APPLE_fence);
@@ -246,8 +265,7 @@
caps.GL_APPLE_vertex_program_evaluators);
capInfos.put("APPLE ycbcr 422", caps.GL_APPLE_ycbcr_422);
capInfos.put("ARB ES2 compatibility", caps.GL_ARB_ES2_compatibility);
- capInfos
- .put("ARB blend func extended", caps.GL_ARB_blend_func_extended);
+ capInfos.put("ARB blend func extended", caps.GL_ARB_blend_func_extended);
capInfos.put("ARB cl event", caps.GL_ARB_cl_event);
capInfos.put("ARB color buffer float", caps.GL_ARB_color_buffer_float);
capInfos.put("ARB compatibility", caps.GL_ARB_compatibility);
@@ -286,8 +304,7 @@
capInfos.put("ARB multitexture", caps.GL_ARB_multitexture);
capInfos.put("ARB occlusion query", caps.GL_ARB_occlusion_query);
capInfos.put("ARB occlusion query2", caps.GL_ARB_occlusion_query2);
- capInfos
- .put("ARB pixel buffer object", caps.GL_ARB_pixel_buffer_object);
+ capInfos.put("ARB pixel buffer object", caps.GL_ARB_pixel_buffer_object);
capInfos.put("ARB point parameters", caps.GL_ARB_point_parameters);
capInfos.put("ARB point sprite", caps.GL_ARB_point_sprite);
capInfos.put("ARB provoking vertex", caps.GL_ARB_provoking_vertex);
@@ -297,8 +314,7 @@
capInfos.put("ARB seamless cube map", caps.GL_ARB_seamless_cube_map);
capInfos.put("ARB separate shader objects",
caps.GL_ARB_separate_shader_objects);
- capInfos
- .put("ARB shader bit encoding", caps.GL_ARB_shader_bit_encoding);
+ capInfos.put("ARB shader bit encoding", caps.GL_ARB_shader_bit_encoding);
capInfos.put("ARB shader objects", caps.GL_ARB_shader_objects);
capInfos.put("ARB shader precision", caps.GL_ARB_shader_precision);
capInfos.put("ARB shader stencil export",
@@ -312,16 +328,14 @@
capInfos.put("ARB shadow", caps.GL_ARB_shadow);
capInfos.put("ARB shadow ambient", caps.GL_ARB_shadow_ambient);
capInfos.put("ARB sync", caps.GL_ARB_sync);
- capInfos
- .put("ARB tessellation shader", caps.GL_ARB_tessellation_shader);
+ capInfos.put("ARB tessellation shader", caps.GL_ARB_tessellation_shader);
capInfos.put("ARB texture border clamp",
caps.GL_ARB_texture_border_clamp);
capInfos.put("ARB texture buffer object",
caps.GL_ARB_texture_buffer_object);
capInfos.put("ARB texture buffer object rgb32",
caps.GL_ARB_texture_buffer_object_rgb32);
- capInfos
- .put("ARB texture compression", caps.GL_ARB_texture_compression);
+ capInfos.put("ARB texture compression", caps.GL_ARB_texture_compression);
capInfos.put("ARB texture compression bptc",
caps.GL_ARB_texture_compression_bptc);
capInfos.put("ARB texture compression rgtc",
@@ -330,8 +344,7 @@
capInfos.put("ARB texture cube map array",
caps.GL_ARB_texture_cube_map_array);
capInfos.put("ARB texture env add", caps.GL_ARB_texture_env_add);
- capInfos
- .put("ARB texture env combine", caps.GL_ARB_texture_env_combine);
+ capInfos.put("ARB texture env combine", caps.GL_ARB_texture_env_combine);
capInfos.put("ARB texture env crossbar",
caps.GL_ARB_texture_env_crossbar);
capInfos.put("ARB texture env dot3", caps.GL_ARB_texture_env_dot3);
@@ -339,8 +352,7 @@
capInfos.put("ARB texture gather", caps.GL_ARB_texture_gather);
capInfos.put("ARB texture mirrored repeat",
caps.GL_ARB_texture_mirrored_repeat);
- capInfos
- .put("ARB texture multisample", caps.GL_ARB_texture_multisample);
+ capInfos.put("ARB texture multisample", caps.GL_ARB_texture_multisample);
capInfos.put("ARB texture non power of two",
caps.GL_ARB_texture_non_power_of_two);
capInfos.put("ARB texture query lod", caps.GL_ARB_texture_query_lod);
@@ -349,18 +361,14 @@
capInfos.put("ARB texture rgb10 a2ui", caps.GL_ARB_texture_rgb10_a2ui);
capInfos.put("ARB texture swizzle", caps.GL_ARB_texture_swizzle);
capInfos.put("ARB timer query", caps.GL_ARB_timer_query);
- capInfos
- .put("ARB transform feedback2", caps.GL_ARB_transform_feedback2);
- capInfos
- .put("ARB transform feedback3", caps.GL_ARB_transform_feedback3);
+ capInfos.put("ARB transform feedback2", caps.GL_ARB_transform_feedback2);
+ capInfos.put("ARB transform feedback3", caps.GL_ARB_transform_feedback3);
capInfos.put("ARB transpose matrix", caps.GL_ARB_transpose_matrix);
capInfos.put("ARB uniform buffer object",
caps.GL_ARB_uniform_buffer_object);
capInfos.put("ARB vertex array bgra", caps.GL_ARB_vertex_array_bgra);
- capInfos
- .put("ARB vertex array object", caps.GL_ARB_vertex_array_object);
- capInfos
- .put("ARB vertex attrib 64bit", caps.GL_ARB_vertex_attrib_64bit);
+ capInfos.put("ARB vertex array object", caps.GL_ARB_vertex_array_object);
+ capInfos.put("ARB vertex attrib 64bit", caps.GL_ARB_vertex_attrib_64bit);
capInfos.put("ARB vertex blend", caps.GL_ARB_vertex_blend);
capInfos.put("ARB vertex buffer object",
caps.GL_ARB_vertex_buffer_object);
@@ -386,10 +394,8 @@
capInfos.put("ATI texture env combine3",
caps.GL_ATI_texture_env_combine3);
capInfos.put("ATI texture float", caps.GL_ATI_texture_float);
- capInfos
- .put("ATI texture mirror once", caps.GL_ATI_texture_mirror_once);
- capInfos
- .put("ATI vertex array object", caps.GL_ATI_vertex_array_object);
+ capInfos.put("ATI texture mirror once", caps.GL_ATI_texture_mirror_once);
+ capInfos.put("ATI vertex array object", caps.GL_ATI_vertex_array_object);
capInfos.put("ATI vertex attrib array object",
caps.GL_ATI_vertex_attrib_array_object);
capInfos.put("ATI vertex streams", caps.GL_ATI_vertex_streams);
@@ -399,20 +405,17 @@
capInfos.put("EXT blend color", caps.GL_EXT_blend_color);
capInfos.put("EXT blend equation separate",
caps.GL_EXT_blend_equation_separate);
- capInfos
- .put("EXT blend func separate", caps.GL_EXT_blend_func_separate);
+ capInfos.put("EXT blend func separate", caps.GL_EXT_blend_func_separate);
capInfos.put("EXT blend minmax", caps.GL_EXT_blend_minmax);
capInfos.put("EXT blend subtract", caps.GL_EXT_blend_subtract);
capInfos.put("EXT Cg shader", caps.GL_EXT_Cg_shader);
capInfos.put("EXT compiled vertex array",
caps.GL_EXT_compiled_vertex_array);
capInfos.put("EXT depth bounds test", caps.GL_EXT_depth_bounds_test);
- capInfos
- .put("EXT direct state access", caps.GL_EXT_direct_state_access);
+ capInfos.put("EXT direct state access", caps.GL_EXT_direct_state_access);
capInfos.put("EXT draw buffers2", caps.GL_EXT_draw_buffers2);
capInfos.put("EXT draw instanced", caps.GL_EXT_draw_instanced);
- capInfos
- .put("EXT draw range elements", caps.GL_EXT_draw_range_elements);
+ capInfos.put("EXT draw range elements", caps.GL_EXT_draw_range_elements);
capInfos.put("EXT fog coord", caps.GL_EXT_fog_coord);
capInfos.put("EXT framebuffer blit", caps.GL_EXT_framebuffer_blit);
capInfos.put("EXT framebuffer multisample",
@@ -429,8 +432,7 @@
capInfos.put("EXT packed float", caps.GL_EXT_packed_float);
capInfos.put("EXT packed pixels", caps.GL_EXT_packed_pixels);
capInfos.put("EXT paletted texture", caps.GL_EXT_paletted_texture);
- capInfos
- .put("EXT pixel buffer object", caps.GL_EXT_pixel_buffer_object);
+ capInfos.put("EXT pixel buffer object", caps.GL_EXT_pixel_buffer_object);
capInfos.put("EXT point parameters", caps.GL_EXT_point_parameters);
capInfos.put("EXT provoking vertex", caps.GL_EXT_provoking_vertex);
capInfos.put("EXT rescale normal", caps.GL_EXT_rescale_normal);
@@ -457,8 +459,7 @@
caps.GL_EXT_texture_compression_rgtc);
capInfos.put("EXT texture compression s3tc",
caps.GL_EXT_texture_compression_s3tc);
- capInfos
- .put("EXT texture env combine", caps.GL_EXT_texture_env_combine);
+ capInfos.put("EXT texture env combine", caps.GL_EXT_texture_env_combine);
capInfos.put("EXT texture env dot3", caps.GL_EXT_texture_env_dot3);
capInfos.put("EXT texture filter anisotropic",
caps.GL_EXT_texture_filter_anisotropic);
@@ -475,8 +476,7 @@
capInfos.put("EXT timer query", caps.GL_EXT_timer_query);
capInfos.put("EXT transform feedback", caps.GL_EXT_transform_feedback);
capInfos.put("EXT vertex array bgra", caps.GL_EXT_vertex_array_bgra);
- capInfos
- .put("EXT vertex attrib 64bit", caps.GL_EXT_vertex_attrib_64bit);
+ capInfos.put("EXT vertex attrib 64bit", caps.GL_EXT_vertex_attrib_64bit);
capInfos.put("EXT vertex shader", caps.GL_EXT_vertex_shader);
capInfos.put("EXT vertex weighting", caps.GL_EXT_vertex_weighting);
@@ -491,8 +491,7 @@
capInfos.put("NV depth buffer float", caps.GL_NV_depth_buffer_float);
capInfos.put("NV depth clamp", caps.GL_NV_depth_clamp);
capInfos.put("NV evaluators", caps.GL_NV_evaluators);
- capInfos
- .put("NV explicit multisample", caps.GL_NV_explicit_multisample);
+ capInfos.put("NV explicit multisample", caps.GL_NV_explicit_multisample);
capInfos.put("NV fence", caps.GL_NV_fence);
capInfos.put("NV float buffer", caps.GL_NV_float_buffer);
capInfos.put("NV fog distance", caps.GL_NV_fog_distance);
@@ -510,13 +509,11 @@
capInfos.put("NV gpu shader5", caps.GL_NV_gpu_shader5);
capInfos.put("NV half float", caps.GL_NV_half_float);
capInfos.put("NV light max exponent", caps.GL_NV_light_max_exponent);
- capInfos
- .put("NV multisample coverage", caps.GL_NV_multisample_coverage);
+ capInfos.put("NV multisample coverage", caps.GL_NV_multisample_coverage);
capInfos.put("NV multisample filter hint",
caps.GL_NV_multisample_filter_hint);
capInfos.put("NV occlusion query", caps.GL_NV_occlusion_query);
- capInfos
- .put("NV packed depth stencil", caps.GL_NV_packed_depth_stencil);
+ capInfos.put("NV packed depth stencil", caps.GL_NV_packed_depth_stencil);
capInfos.put("NV parameter buffer object",
caps.GL_NV_parameter_buffer_object);
capInfos.put("NV parameter buffer object2",
@@ -534,8 +531,7 @@
capInfos.put("NV texture barrier", caps.GL_NV_texture_barrier);
capInfos.put("NV texture compression vtc",
caps.GL_NV_texture_compression_vtc);
- capInfos
- .put("NV texture env combine4", caps.GL_NV_texture_env_combine4);
+ capInfos.put("NV texture env combine4", caps.GL_NV_texture_env_combine4);
capInfos.put("NV texture expand normal",
caps.GL_NV_texture_expand_normal);
capInfos.put("NV texture rectangle", caps.GL_NV_texture_rectangle);
@@ -591,7 +587,11 @@
io_strb.append(NL);
}
- public static void main(String[] args) {
+ public static void main(String[] args) throws Exception {
+
+ Display.setFullscreen(false);
+ Display.create();
+
String s = gatherInformation();
System.out.println(s);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-26 13:19:29
|
Revision: 3766
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3766&view=rev
Author: kappa1
Date: 2012-04-26 13:19:18 +0000 (Thu, 26 Apr 2012)
Log Message:
-----------
AppletLoader: add further checks to prevent Java default caching
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-22 23:05:10 UTC (rev 3765)
+++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-26 13:19:18 UTC (rev 3766)
@@ -1460,7 +1460,7 @@
urlconnection.setUseCaches(false);
if (urlconnection instanceof HttpURLConnection) {
- urlconnection.setRequestProperty("Cache-Control", "no-cache");
+ urlconnection.setRequestProperty("Cache-Control", "no-store,max-age=0,no-cache");
urlconnection.connect();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-22 23:05:16
|
Revision: 3765
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3765&view=rev
Author: kappa1
Date: 2012-04-22 23:05:10 +0000 (Sun, 22 Apr 2012)
Log Message:
-----------
AppletLoader: set all streams that are open to use try/finally blocks to close the streams
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-22 22:51:47 UTC (rev 3764)
+++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-22 23:05:10 UTC (rev 3765)
@@ -1143,10 +1143,13 @@
*/
protected void writeObjectFile(File file, Object object) throws Exception {
FileOutputStream fos = new FileOutputStream(file);
- ObjectOutputStream dos = new ObjectOutputStream(fos);
- dos.writeObject(object);
- dos.close();
- fos.close();
+ try {
+ ObjectOutputStream dos = new ObjectOutputStream(fos);
+ dos.writeObject(object);
+ dos.close();
+ } finally {
+ fos.close();
+ }
}
/**
@@ -1602,15 +1605,17 @@
byte [] buffer = new byte [1<<14];
- int ret = inputHandle.read(buffer);
- while (ret >= 1) {
- outputHandle.write(buffer,0,ret);
- ret = inputHandle.read(buffer);
+ try {
+ int ret = inputHandle.read(buffer);
+ while (ret >= 1) {
+ outputHandle.write(buffer,0,ret);
+ ret = inputHandle.read(buffer);
+ }
+ } finally {
+ inputHandle.close();
+ outputHandle.close();
}
- inputHandle.close();
- outputHandle.close();
-
// delete LZMA file, as it is no longer needed
f.delete();
}
@@ -1630,17 +1635,19 @@
OutputStream outputHandle = new FileOutputStream(out);
- byte [] buffer = new byte [1<<14];
-
- int ret = inputHandle.read(buffer);
- while (ret >= 1) {
- outputHandle.write(buffer,0,ret);
- ret = inputHandle.read(buffer);
+ try {
+ byte [] buffer = new byte [1<<14];
+
+ int ret = inputHandle.read(buffer);
+ while (ret >= 1) {
+ outputHandle.write(buffer,0,ret);
+ ret = inputHandle.read(buffer);
+ }
+ } finally {
+ inputHandle.close();
+ outputHandle.close();
}
- inputHandle.close();
- outputHandle.close();
-
// delete GZip file, as it is no longer needed
f.delete();
}
@@ -1655,12 +1662,15 @@
File f = new File(in);
FileOutputStream fostream = new FileOutputStream(out);
JarOutputStream jostream = new JarOutputStream(fostream);
+
+ try {
+ Pack200.Unpacker unpacker = Pack200.newUnpacker();
+ unpacker.unpack(f, jostream);
+ } finally {
+ jostream.close();
+ fostream.close();
+ }
- Pack200.Unpacker unpacker = Pack200.newUnpacker();
- unpacker.unpack(f, jostream);
- jostream.close();
- fostream.close();
-
// delete pack file as its no longer needed
f.delete();
}
@@ -1803,21 +1813,23 @@
InputStream in = jarFile.getInputStream(jarFile.getEntry(entry.getName()));
OutputStream out = new FileOutputStream(path + "natives" + File.separator + entry.getName());
- int bufferSize;
- byte buffer[] = new byte[65536];
-
- while ((bufferSize = in.read(buffer, 0, buffer.length)) != -1) {
- debug_sleep(10);
- out.write(buffer, 0, bufferSize);
- currentSizeExtract += bufferSize;
-
- // update progress bar
- percentage = 65 + (int)(percentageParts * (jarNum + currentSizeExtract/(float)totalSizeExtract));
- subtaskMessage = "Extracting: " + entry.getName() + " " + ((currentSizeExtract * 100) / totalSizeExtract) + "%";
+ try {
+ int bufferSize;
+ byte buffer[] = new byte[65536];
+
+ while ((bufferSize = in.read(buffer, 0, buffer.length)) != -1) {
+ debug_sleep(10);
+ out.write(buffer, 0, bufferSize);
+ currentSizeExtract += bufferSize;
+
+ // update progress bar
+ percentage = 65 + (int)(percentageParts * (jarNum + currentSizeExtract/(float)totalSizeExtract));
+ subtaskMessage = "Extracting: " + entry.getName() + " " + ((currentSizeExtract * 100) / totalSizeExtract) + "%";
+ }
+ } finally {
+ in.close();
+ out.close();
}
-
- in.close();
- out.close();
// validate the certificate for the native file being extracted
if (!certificatesMatch(certificate, entry.getCertificates())) {
@@ -1881,6 +1893,7 @@
JarURLConnection jurl = (JarURLConnection) (new URL("jar:" + location.toString() + "!/org/lwjgl/util/applet/AppletLoader.class").openConnection());
jurl.setDefaultUseCaches(true);
certificate = jurl.getCertificates();
+ jurl.setDefaultUseCaches(false);
}
return certificate;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-22 22:51:54
|
Revision: 3764
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3764&view=rev
Author: kappa1
Date: 2012-04-22 22:51:47 +0000 (Sun, 22 Apr 2012)
Log Message:
-----------
AppletLoader: add try/finally block to ensure file is closed on exception in the downloadJars(), thx to MatthiasM for pointing it out.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-22 22:21:41 UTC (rev 3763)
+++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-22 22:51:47 UTC (rev 3764)
@@ -1464,44 +1464,47 @@
String currentFile = getFileName(urlList[i]);
InputStream inputstream = getJarInputStream(currentFile, urlconnection);
FileOutputStream fos = new FileOutputStream(path + currentFile);
-
-
+
+
int bufferSize;
long downloadStartTime = System.currentTimeMillis();
int downloadedAmount = 0;
int fileSize = 0;
String downloadSpeedMessage = "";
-
- while ((bufferSize = inputstream.read(buffer, 0, buffer.length)) != -1) {
- debug_sleep(10);
- fos.write(buffer, 0, bufferSize);
- currentSizeDownload += bufferSize;
- fileSize += bufferSize;
- percentage = initialPercentage + ((currentSizeDownload * 45) / totalSizeDownload);
- subtaskMessage = "Retrieving: " + currentFile + " " + ((currentSizeDownload * 100) / totalSizeDownload) + "%";
-
- downloadedAmount += bufferSize;
- long timeLapse = System.currentTimeMillis() - downloadStartTime;
- // update only if a second or more has passed
- if (timeLapse >= 1000) {
- // get kb/s, nice that bytes/millis is same as kilobytes/seconds
- float downloadSpeed = (float) downloadedAmount / timeLapse;
- // round to two decimal places
- downloadSpeed = ((int)(downloadSpeed*100))/100f;
- // set current speed message
- downloadSpeedMessage = " - " + downloadSpeed + " KB/sec";
- // reset downloaded amount
- downloadedAmount = 0;
- // reset start time
- downloadStartTime = System.currentTimeMillis();
+
+ try {
+ while ((bufferSize = inputstream.read(buffer, 0, buffer.length)) != -1) {
+ debug_sleep(10);
+ fos.write(buffer, 0, bufferSize);
+ currentSizeDownload += bufferSize;
+ fileSize += bufferSize;
+ percentage = initialPercentage + ((currentSizeDownload * 45) / totalSizeDownload);
+ subtaskMessage = "Retrieving: " + currentFile + " " + ((currentSizeDownload * 100) / totalSizeDownload) + "%";
+
+ downloadedAmount += bufferSize;
+ long timeLapse = System.currentTimeMillis() - downloadStartTime;
+ // update only if a second or more has passed
+ if (timeLapse >= 1000) {
+ // get kb/s, nice that bytes/millis is same as kilobytes/seconds
+ float downloadSpeed = (float) downloadedAmount / timeLapse;
+ // round to two decimal places
+ downloadSpeed = ((int)(downloadSpeed*100))/100f;
+ // set current speed message
+ downloadSpeedMessage = " - " + downloadSpeed + " KB/sec";
+ // reset downloaded amount
+ downloadedAmount = 0;
+ // reset start time
+ downloadStartTime = System.currentTimeMillis();
+ }
+
+ subtaskMessage += downloadSpeedMessage;
}
-
- subtaskMessage += downloadSpeedMessage;
+
+ } finally {
+ inputstream.close();
+ fos.close();
}
-
- inputstream.close();
- fos.close();
-
+
// download complete, verify if it was successful
if (urlconnection instanceof HttpURLConnection) {
if (fileSize == fileSizes[i]) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-22 22:21:47
|
Revision: 3763
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3763&view=rev
Author: kappa1
Date: 2012-04-22 22:21:41 +0000 (Sun, 22 Apr 2012)
Log Message:
-----------
AppletLoader: add extra urlconnections.setUseCaches(false) as an extra precaution to make sure caching is disabled.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-18 16:50:40 UTC (rev 3762)
+++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2012-04-22 22:21:41 UTC (rev 3763)
@@ -1454,6 +1454,7 @@
debug_sleep(2000);
urlconnection = urlList[i].openConnection();
+ urlconnection.setUseCaches(false);
if (urlconnection instanceof HttpURLConnection) {
urlconnection.setRequestProperty("Cache-Control", "no-cache");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sp...@us...> - 2012-04-18 16:50:50
|
Revision: 3762
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3762&view=rev
Author: spasi
Date: 2012-04-18 16:50:40 +0000 (Wed, 18 Apr 2012)
Log Message:
-----------
Added INTEL_thread_local_exec OpenCL extension.
Added Paths:
-----------
trunk/LWJGL/src/templates/org/lwjgl/opencl/INTEL_thread_local_exec.java
Added: trunk/LWJGL/src/templates/org/lwjgl/opencl/INTEL_thread_local_exec.java
===================================================================
--- trunk/LWJGL/src/templates/org/lwjgl/opencl/INTEL_thread_local_exec.java (rev 0)
+++ trunk/LWJGL/src/templates/org/lwjgl/opencl/INTEL_thread_local_exec.java 2012-04-18 16:50:40 UTC (rev 3762)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2002-2012 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.opencl;
+
+import org.lwjgl.util.generator.opencl.CLDeviceExtension;
+
+@CLDeviceExtension
+public interface INTEL_thread_local_exec {
+
+ /**
+ * Allows the user to execute OpenCL tasks and kernels with
+ * the user application's threads. This token that can
+ * be passed to clCreateCommandQueue, creating a queue with the "thread
+ * local exec" capability.
+ * <p/>
+ * All enqueue APIs (e.g., clEnqueueRead) submitted to such a queue
+ * never enqueue commands. An Enqueue API call is executed by the
+ * caller host-thread itself without involving any of the OpenCL
+ * runtime threads, much like function calls.
+ */
+ int CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL = (1 << 31);
+
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-14 18:55:48
|
Revision: 3761
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3761&view=rev
Author: kappa1
Date: 2012-04-14 18:55:40 +0000 (Sat, 14 Apr 2012)
Log Message:
-----------
Fix Display.getWidth() and Display.getHeight() to return the correct values on OS X when the window has been resized.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXFrame.java
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXFrame.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXFrame.java 2012-04-10 13:23:08 UTC (rev 3760)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXFrame.java 2012-04-14 18:55:40 UTC (rev 3761)
@@ -110,7 +110,17 @@
Insets insets = getInsets();
setBounds(x, y, width + insets.left + insets.right, height + insets.top + insets.bottom);
}
+
+ public int getWidth() {
+ Insets insets = getInsets();
+ return super.getWidth() - insets.left - insets.right;
+ }
+ public int getHeight() {
+ Insets insets = getInsets();
+ return super.getHeight() - insets.top - insets.bottom;
+ }
+
public Rectangle syncGetBounds() {
synchronized ( this ) {
return bounds;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-10 13:23:15
|
Revision: 3760
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3760&view=rev
Author: kappa1
Date: 2012-04-10 13:23:08 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
Update ControllerAdapter in util package to reflect new changes in the Controller interface class (should fix broken build)
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/input/Controller.java
trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java
trunk/LWJGL/src/java/org/lwjgl/util/input/ControllerAdapter.java
Modified: trunk/LWJGL/src/java/org/lwjgl/input/Controller.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/input/Controller.java 2012-04-10 11:44:50 UTC (rev 3759)
+++ trunk/LWJGL/src/java/org/lwjgl/input/Controller.java 2012-04-10 13:23:08 UTC (rev 3760)
@@ -279,12 +279,12 @@
*
* @param index The rumbler index
*/
- String getRumblerName(final int index);
+ String getRumblerName(int index);
/** Sets the vibration strength of the specified rumbler
*
* @param index The index of the rumbler
* @param strength The strength to vibrate at
*/
- void setRumblerStrength(final int index, final float strength);
+ void setRumblerStrength(int index, float strength);
}
Modified: trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java 2012-04-10 11:44:50 UTC (rev 3759)
+++ trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java 2012-04-10 13:23:08 UTC (rev 3760)
@@ -89,7 +89,7 @@
* @param index The index this controller has been assigned to
* @param target The target JInput controller this class is wrapping
*/
- JInputController(final int index, net.java.games.input.Controller target) {
+ JInputController(int index, net.java.games.input.Controller target) {
this.target = target;
this.index = index;
@@ -515,11 +515,11 @@
return rumblers.length;
}
- public String getRumblerName(final int index) {
+ public String getRumblerName(int index) {
return rumblers[index].getAxisName();
}
- public void setRumblerStrength(final int index, final float strength) {
+ public void setRumblerStrength(int index, float strength) {
rumblers[index].rumble(strength);
}
Modified: trunk/LWJGL/src/java/org/lwjgl/util/input/ControllerAdapter.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/util/input/ControllerAdapter.java 2012-04-10 11:44:50 UTC (rev 3759)
+++ trunk/LWJGL/src/java/org/lwjgl/util/input/ControllerAdapter.java 2012-04-10 13:23:08 UTC (rev 3760)
@@ -326,4 +326,15 @@
*/
public void setRZAxisDeadZone(float zone) {
}
+
+ public int getRumblerCount() {
+ return 0;
+ }
+
+ public String getRumblerName(int index) {
+ return "rumber n/a";
+ }
+
+ public void setRumblerStrength(int index, float strength) {
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ka...@us...> - 2012-04-10 11:44:56
|
Revision: 3759
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3759&view=rev
Author: kappa1
Date: 2012-04-10 11:44:50 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
Apply patch by OrangyTang to expose JInput's rumble functionality in LWJGL's Controller class.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/input/Controller.java
trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java
Modified: trunk/LWJGL/src/java/org/lwjgl/input/Controller.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/input/Controller.java 2012-03-27 13:12:30 UTC (rev 3758)
+++ trunk/LWJGL/src/java/org/lwjgl/input/Controller.java 2012-04-10 11:44:50 UTC (rev 3759)
@@ -270,4 +270,21 @@
* @param zone The dead zone to use for the RZ axis
*/
void setRZAxisDeadZone(float zone);
+
+
+ /** Returns the number of rumblers this controller supports */
+ int getRumblerCount();
+
+ /** Returns the name of the specified rumbler
+ *
+ * @param index The rumbler index
+ */
+ String getRumblerName(final int index);
+
+ /** Sets the vibration strength of the specified rumbler
+ *
+ * @param index The index of the rumbler
+ * @param strength The strength to vibrate at
+ */
+ void setRumblerStrength(final int index, final float strength);
}
Modified: trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java 2012-03-27 13:12:30 UTC (rev 3758)
+++ trunk/LWJGL/src/java/org/lwjgl/input/JInputController.java 2012-04-10 11:44:50 UTC (rev 3759)
@@ -38,6 +38,7 @@
import net.java.games.input.Component.Identifier.Button;
import net.java.games.input.Event;
import net.java.games.input.EventQueue;
+import net.java.games.input.Rumbler;
/**
* A wrapper round a JInput controller that attempts to make the interface
@@ -56,6 +57,8 @@
private ArrayList<Component> axes = new ArrayList<Component>();
/** The POVs that have been detected on the JInput controller */
private ArrayList<Component> pov = new ArrayList<Component>();
+ /** The rumblers exposed by the controller */
+ private Rumbler[] rumblers;
/** The state of the buttons last check */
private boolean[] buttonState;
/** The values that were read from the pov last check */
@@ -86,7 +89,7 @@
* @param index The index this controller has been assigned to
* @param target The target JInput controller this class is wrapping
*/
- JInputController(int index,net.java.games.input.Controller target) {
+ JInputController(final int index, net.java.games.input.Controller target) {
this.target = target;
this.index = index;
@@ -148,6 +151,8 @@
axesMax[i] = 1.0f;
deadZones[i] = 0.05f;
}
+
+ rumblers = target.getRumblers();
}
/*
@@ -506,5 +511,16 @@
return 0;
}
+ public int getRumblerCount() {
+ return rumblers.length;
+ }
+
+ public String getRumblerName(final int index) {
+ return rumblers[index].getAxisName();
+ }
+
+ public void setRumblerStrength(final int index, final float strength) {
+ rumblers[index].rumble(strength);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|