From 0745b176e4fefe20d068a2c8b79e0f899372b176 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 1 Jan 2014 15:13:30 -0600 Subject: [PATCH 1/5] Link the gamepad library to Xinput9_1_0.dll so the DirectX Runtime Installer isn't required for Vista and later --- jni/gamepad_jni/buildwin.sh | 5 ++--- jni/gamepad_jni/win32/libxinput9_1_0.a | Bin 0 -> 5322 bytes jni/gamepad_jni/win64/libxinput9_1_0.a | Bin 0 -> 5242 bytes libs/win32/gamepad_jni.dll | Bin 53056 -> 52356 bytes libs/win64/gamepad_jni.dll | Bin 108935 -> 108927 bytes 5 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 jni/gamepad_jni/win32/libxinput9_1_0.a create mode 100644 jni/gamepad_jni/win64/libxinput9_1_0.a diff --git a/jni/gamepad_jni/buildwin.sh b/jni/gamepad_jni/buildwin.sh index 1e5b9e6..9ac9177 100644 --- a/jni/gamepad_jni/buildwin.sh +++ b/jni/gamepad_jni/buildwin.sh @@ -1,4 +1,3 @@ rm gamepad_jni.dll gamepad_jni64.dll -/C/MinGW/bin/gcc -shared -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include" -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include/win32" *.c -L./win32 -lstem_gamepad -lxinput1_3 -Wl,--no-undefined -Wl,--kill-at -o gamepad_jni.dll -/C/MinGW-w64/bin/gcc -shared -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include" -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include/win32" *.c -L./win64 -lstem_gamepad -lxinput1_3 -Wl,--no-undefined -Wl,--kill-at -o gamepad_jni64.dll - +/C/MinGW/bin/gcc -m32 -shared -Wall -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include" -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include/win32" *.c -L./win32 -lstem_gamepad -lxinput9_1_0 -Wl,--no-undefined -Wl,--kill-at -o gamepad_jni.dll +/C/MinGW-w64/bin/gcc -m64 -shared -Wall -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include" -I"/C/Program Files (x86)/Java/jdk1.7.0_45/include/win32" *.c -L./win64 -lstem_gamepad -lxinput9_1_0 -Wl,--no-undefined -Wl,--kill-at -o gamepad_jni64.dll diff --git a/jni/gamepad_jni/win32/libxinput9_1_0.a b/jni/gamepad_jni/win32/libxinput9_1_0.a new file mode 100644 index 0000000000000000000000000000000000000000..d4bc6933a421bf99036709339172af3e8793ab9a GIT binary patch literal 5322 zcmeI0&2G~`5XZ+(N=sDnQ6bbrK?Z@u0R`ui6jfCa6%|ssP*nAV!wxXR6TI0 zICJPj@E|+^k3^Z-4|^Tkae8R03Rd!ZGyC^$JoEGH+D}&Oqn-Y0>6H;Lm0GLSG+R}( zZWt!(QftGgHLBu*P6+_!0koe0#TNjxOZ>R~8-R}aQ-0j-0noAVk`BxAz3z!OI2;Ab zR>d+c+wunXz6+MscWo!p3)c1r5^uV}W?%qo2FiSj1sreR56TB& zh_Yf+G0kSPX&8-GEsV{Eb_>G;u%w~)S!+fs2kuG0+S!!>W~c1fft@X3J#8?5mAk`X zjtovo=h1-A>QY<8MiKv)TG)78*N}G7&1LIeOWi$e%%|vNzk*xY@qH-wJl_?af6f8E zYCU^T8iZZ-6%Ab&8=qvVpY$w^;-f;AM)42bb3vmzUW5;sZ)UJ-f`<8pqF>O+Gsz-H zCyfq|u+DrcOT=LR0t_~n8wmzi(RT~%ZxpYa!K(De18fk3hKMW0CX2zvvDhoR7}NBu zsfBdX*U~=z`wn)@QW}N(ti@Pnt!XIjv($-qf>*GJLoeu$27BDXIDu;*nR%K1Q$Zs? zlW(JP0g{<_ImzRG-&0>Ky#MyxXktHPSFT zr44PCP5up8paqgBQzJl@IXqrs|7XDqos7%NyJ4OrFV%6fFUq_CCa4iX38Sfnntr-2 z#{3Fuj?#5a8jA`&`)#3N238qx{+t?TXOWHOj<5IBN0FufP9)&o0uSzE`mMH9Kht!D zWQGQH&0_gj-aYdY&4O1c>yUVclnl+EGofMkNdJK|PS;bR**T97*>3<m~F4iLFPJXddvv7_whw{pllsA$)iBpVx9_8B#9al+tSDAMb<$k&@LHTjI zE~I=BBR4JOT12_}-hHEU^J4-SOGNf6H?UfVEj&kLtGBIuVwmu`B8OsgN{TBp6<^skcQEoI(G6nD~f35s{qbs@#%hiNGW5MPAwnwz|Sf9 z5uf(pAGANgKf=GmdCtAL$xV~Hwl9^T7n0nZ`)%&c_kMD6(>qU`-Obk1(jy~XD%E=3 zs+iU4qG6bg8XzPPZI}Y&GPzAukAkX zx&F?wx94wqD?Q)srY?*>QmEpqyl^_sh9CH$?`3|QYFiG1RmX2f*B58*r~M!-@5JV- zT(6j>Wm$%?uvm#*cfU@e@c?rL^p({npd5PpA*-u*2COy8t`jv-v zhotlAf^#*Yy@-_}j!P~}U<%!Wh?8zwt$QqVSFkdZqZ94o$mfLtRd#~_%1uA;qQ>8+ z03QlXXG;X4xa=8qq4)JeGTARprIEbSRT{~sBGZrq=@NO#Jet5Jy`a=Ee~1FTKn`UK z^+AO+8r;IY^0_M!i>(n@v=(?qFpNe?uxO!od?dxc&Eh=WHNN6dwNQB=FcTo8-~snONuDR!e$zpVXN2P;t|G2%4xdEF%Zn$ z&Jl0_*w+ zO{A9^a+C6wBJ?ai#P)X)O>{8895SO~29&Y{T`#X3CYdtMfaFmPJ8Me)LZVA$)H-T9 z`MQ{5x{oE)e9qTdVqDj-@-oth7~b*8={-6-K2Bmut=Rvz#wMCy>XXm;6xKL1oDV#W z=+0#0Z0-fwLzZbF;)}UOJ?J8mWKj`e4y34L_ewL*N5n^n>luu2Dz9UW3O#K+a-W^^ zod(aa!rwe+uTK;#v&_qwt^Q}0Jmt8>tA(*Jt4A{!FBEYc{|2-19m{L#B$&S(Pnew_ zlG%DT&;G!P9+YQ;DEH7|oOyOn>i4WXdzi1wF#A1U7w6f#cz>hjSuJ5!@ttzM8J%TTEBt0P&yCdCAGic;&UQSRE(i(ieg# P8a%)%XH@)Nwd(x?2Bx_3 literal 0 HcmV?d00001 diff --git a/libs/win32/gamepad_jni.dll b/libs/win32/gamepad_jni.dll index 728c0e52274c301d23a549be0574ebdb226e6b67..fe93fbb81fe02ad19734c6b6eb7cb13277c3af8a 100644 GIT binary patch delta 4722 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 delta 5168 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 OC+VBCC-F3Wiv9-z#^jd( From 40524a0c76db4b6be46f10f824288941ff6740eb Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 1 Jan 2014 15:15:09 -0600 Subject: [PATCH 2/5] Remove the native gamepad cleanup on application close. We don't want native code in the critical closing path because it could mean that the program can't be closed if someone chooses the wrong platform JAR. --- src/com/limelight/gui/MainFrame.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/com/limelight/gui/MainFrame.java b/src/com/limelight/gui/MainFrame.java index 61896ba..d59081b 100644 --- a/src/com/limelight/gui/MainFrame.java +++ b/src/com/limelight/gui/MainFrame.java @@ -59,16 +59,6 @@ public class MainFrame { public void build() { limeFrame = new JFrame("Limelight"); limeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - limeFrame.addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent e) { - super.windowClosing(e); - if (NativeGamepad.isRunning()) { - NativeGamepad.stop(); - } - - } - }); Container mainPane = limeFrame.getContentPane(); mainPane.setLayout(new BorderLayout()); From 0ac3dd6adb70eba71078d32917566af5d9c36351 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 1 Jan 2014 15:33:48 -0600 Subject: [PATCH 3/5] Log to a file if running from a JAR --- src/com/limelight/Limelight.java | 13 +++++++++++++ src/com/limelight/binding/LibraryHelper.java | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/src/com/limelight/Limelight.java b/src/com/limelight/Limelight.java index 639c137..ea0b43f 100644 --- a/src/com/limelight/Limelight.java +++ b/src/com/limelight/Limelight.java @@ -1,5 +1,9 @@ package com.limelight; +import java.io.File; +import java.io.IOException; +import java.io.PrintStream; + import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.UIManager; @@ -106,6 +110,15 @@ public class Limelight implements NvConnectionListener { */ //TODO: We should allow command line args to specify things like debug mode (verbose logging) or even start a stream directly. public static void main(String args[]) { + // Redirect logging to a file if we're running from a JAR + if (LibraryHelper.isRunningFromJar()) { + try { + System.setErr(new PrintStream(new File("error.log"))); + System.setOut(new PrintStream(new File("output.log"))); + } catch (IOException e) { + } + } + //fix the menu bar if we are running in osx if (System.getProperty("os.name").contains("Mac OS X")) { // take the menu bar off the jframe diff --git a/src/com/limelight/binding/LibraryHelper.java b/src/com/limelight/binding/LibraryHelper.java index 0eb7062..bda2f7d 100644 --- a/src/com/limelight/binding/LibraryHelper.java +++ b/src/com/limelight/binding/LibraryHelper.java @@ -94,4 +94,9 @@ public class LibraryHelper { } } } + + public static boolean isRunningFromJar() { + String classPath = LibraryHelper.class.getResource("LibraryHelper.class").toString(); + return classPath.startsWith("jar:"); + } } From 682aa6d205fdf9fe6754d70440a1f64195b40003 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 1 Jan 2014 15:34:07 -0600 Subject: [PATCH 4/5] Fix unused import warnings --- src/com/limelight/gui/MainFrame.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/limelight/gui/MainFrame.java b/src/com/limelight/gui/MainFrame.java index d59081b..e505410 100644 --- a/src/com/limelight/gui/MainFrame.java +++ b/src/com/limelight/gui/MainFrame.java @@ -6,8 +6,6 @@ import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.io.IOException; import java.net.InetAddress; import java.net.SocketException; @@ -28,7 +26,6 @@ import org.xmlpull.v1.XmlPullParserException; import com.limelight.Limelight; import com.limelight.binding.PlatformBinding; -import com.limelight.input.gamepad.NativeGamepad; import com.limelight.nvstream.NvConnection; import com.limelight.nvstream.http.NvHTTP; import com.limelight.settings.PreferencesManager; From 1fbdc9a62259c0abe0909d2656c73b5f8f28538a Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 1 Jan 2014 15:58:53 -0600 Subject: [PATCH 5/5] Extract AVC dependencies on all platforms --- src/com/limelight/binding/LibraryHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/limelight/binding/LibraryHelper.java b/src/com/limelight/binding/LibraryHelper.java index bda2f7d..d6601ec 100644 --- a/src/com/limelight/binding/LibraryHelper.java +++ b/src/com/limelight/binding/LibraryHelper.java @@ -15,7 +15,8 @@ public class LibraryHelper { private static boolean librariesExtracted = false; static { - needsDependencyExtraction = System.getProperty("os.name", "").contains("Windows"); + // Windows and OS X need this, but we might as well do it for everybody + needsDependencyExtraction = true; libraryExtractionFolder = System.getProperty("java.io.tmpdir", "."); // FFMPEG libraries