r551 - in jnijnajntest: . src/main/java/org/test src/main/java/org/test/testbridj src/main/java/org/test/testbridj/x11 src/main/java/org/test/testjna/unix
Author: echatellier Date: 2012-06-29 21:35:30 +0200 (Fri, 29 Jun 2012) New Revision: 551 Url: http://nuiton.org/repositories/revision/sandbox/551 Log: Add bridj native libs call test Added: jnijnajntest/src/main/java/org/test/testbridj/ jnijnajntest/src/main/java/org/test/testbridj/TestIdleBridj.java jnijnajntest/src/main/java/org/test/testbridj/x11/ jnijnajntest/src/main/java/org/test/testbridj/x11/Display.java jnijnajntest/src/main/java/org/test/testbridj/x11/Drawable.java jnijnajntest/src/main/java/org/test/testbridj/x11/UnixSystemInfo.java jnijnajntest/src/main/java/org/test/testbridj/x11/Window.java jnijnajntest/src/main/java/org/test/testbridj/x11/X11.java jnijnajntest/src/main/java/org/test/testbridj/x11/Xss.java Modified: jnijnajntest/pom.xml jnijnajntest/src/main/java/org/test/testjna/unix/UnixSystemInfo.java Modified: jnijnajntest/pom.xml =================================================================== --- jnijnajntest/pom.xml 2012-05-30 17:51:18 UTC (rev 550) +++ jnijnajntest/pom.xml 2012-06-29 19:35:30 UTC (rev 551) @@ -35,5 +35,11 @@ <version>1.0.0</version> <scope>runtime</scope> </dependency> + <dependency> + <groupId>com.nativelibs4java</groupId> + <artifactId>bridj</artifactId> + <version>0.6.1</version> + <scope>compile</scope> + </dependency> </dependencies> </project> \ No newline at end of file Added: jnijnajntest/src/main/java/org/test/testbridj/TestIdleBridj.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/TestIdleBridj.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/TestIdleBridj.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,51 @@ +/* + * #%L + * + * + * $Id: TestIdleJNA.java 533 2012-05-02 09:23:30Z echatellier $ + * $HeadURL: http://svn.nuiton.org/svn/sandbox/jnijnajntest/src/main/java/org/test/testjn... $ + * %% + * Copyright (C) 2012 Codelutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package org.test.testbridj; + +import org.test.testbridj.x11.UnixSystemInfo; + +/** + * TODO add comment here. + * + * @author chatellier + * @version $Revision: 533 $ + * + * Last update : $Date: 2012-05-02 11:23:30 +0200 (mer., 02 mai 2012) $ + * By : $Author: echatellier $ + */ +public class TestIdleBridj { + + public static void main(String... args) throws InterruptedException { + + UnixSystemInfo idleBridj = new UnixSystemInfo(); + while (true) { + Thread.sleep(1000); + + long idle = idleBridj.getIdleTimeMillis(); + System.out.println("Idle since " + idle + "ms"); + } + } +} Added: jnijnajntest/src/main/java/org/test/testbridj/x11/Display.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/x11/Display.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/x11/Display.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,8 @@ +package org.test.testbridj.x11; +import org.bridj.Pointer; +import org.bridj.TypedPointer; + +public class Display extends TypedPointer { + public Display(long peer) { super(peer); } + public Display(Pointer<?> ptr) { super(ptr); } +} Added: jnijnajntest/src/main/java/org/test/testbridj/x11/Drawable.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/x11/Drawable.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/x11/Drawable.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,8 @@ +package org.test.testbridj.x11; +import org.bridj.Pointer; +import org.bridj.TypedPointer; + +public class Drawable extends TypedPointer { + public Drawable(long peer) { super(peer); } + public Drawable(Pointer<?> ptr) { super(ptr); } +} Added: jnijnajntest/src/main/java/org/test/testbridj/x11/UnixSystemInfo.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/x11/UnixSystemInfo.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/x11/UnixSystemInfo.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,31 @@ +package org.test.testbridj.x11; + +import org.bridj.Pointer; +import org.test.testbridj.x11.Xss.XScreenSaverInfo; + +public class UnixSystemInfo { + public long getIdleTimeMillis() { + Display display = null; + Pointer<XScreenSaverInfo> pInfo = null; + + try { + display = X11.XOpenDisplay(null); + Window window = X11.XDefaultRootWindow(display); + pInfo = Xss.XScreenSaverAllocInfo(); + if (Xss.XScreenSaverQueryInfo(display, window, pInfo) == 0) { + throw new UnsupportedOperationException( + "XSreenSaver extension not supported !"); + } + + return pInfo.get().idle(); + } finally { + if (pInfo != null) { + X11.XFree(pInfo); + } + + if (display != null) { + X11.XCloseDisplay(display); + } + } + } +} Added: jnijnajntest/src/main/java/org/test/testbridj/x11/Window.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/x11/Window.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/x11/Window.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,7 @@ +package org.test.testbridj.x11; +import org.bridj.Pointer; + +public class Window extends Drawable { + public Window(long peer) { super(peer); } + public Window(Pointer<?> ptr) { super(ptr); } +} Added: jnijnajntest/src/main/java/org/test/testbridj/x11/X11.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/x11/X11.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/x11/X11.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,15 @@ +package org.test.testbridj.x11; +import org.bridj.BridJ; +import org.bridj.Pointer; +import org.bridj.ann.Library; + +@Library("X11") +public class X11 { + static { + BridJ.register(); + } + public static native Display XOpenDisplay(Pointer<Byte> name); + public static native Window XDefaultRootWindow(Display display); + public static native int XFree(Pointer data); + public static native int XCloseDisplay(Display display); +} Added: jnijnajntest/src/main/java/org/test/testbridj/x11/Xss.java =================================================================== --- jnijnajntest/src/main/java/org/test/testbridj/x11/Xss.java (rev 0) +++ jnijnajntest/src/main/java/org/test/testbridj/x11/Xss.java 2012-06-29 19:35:30 UTC (rev 551) @@ -0,0 +1,105 @@ +package org.test.testbridj.x11; +import org.bridj.BridJ; +import org.bridj.Pointer; +import org.bridj.StructObject; +import org.bridj.ann.Field; +import org.bridj.ann.Library; +import org.bridj.ann.Ptr; + +@Library("Xss") +public class Xss { + static { + BridJ.register(); + } + public static class XScreenSaverInfo extends StructObject { + public XScreenSaverInfo() { + super(); + } + public XScreenSaverInfo(Pointer pointer) { + super(pointer); + } + /** + * screen saver window<br> + * C type : Window + */ + @Ptr + @Field(0) + public long window() { + return this.io.getSizeTField(this, 0); + } + /** + * screen saver window<br> + * C type : Window + */ + @Ptr + @Field(0) + public XScreenSaverInfo window(long window) { + this.io.setSizeTField(this, 0, window); + return this; + } + /// ScreenSaver{Off,On,Disabled} + @Field(1) + public int state() { + return this.io.getIntField(this, 1); + } + /// ScreenSaver{Off,On,Disabled} + @Field(1) + public XScreenSaverInfo state(int state) { + this.io.setIntField(this, 1, state); + return this; + } + /// ScreenSaver{Blanked,Internal,External} + @Field(2) + public int kind() { + return this.io.getIntField(this, 2); + } + /// ScreenSaver{Blanked,Internal,External} + @Field(2) + public XScreenSaverInfo kind(int kind) { + this.io.setIntField(this, 2, kind); + return this; + } + /// milliseconds + @org.bridj.ann.CLong + @Field(3) + public long til_or_since() { + return this.io.getCLongField(this, 3); + } + /// milliseconds + @org.bridj.ann.CLong + @Field(3) + public XScreenSaverInfo til_or_since(long til_or_since) { + this.io.setCLongField(this, 3, til_or_since); + return this; + } + /// milliseconds + @org.bridj.ann.CLong + @Field(4) + public long idle() { + return this.io.getCLongField(this, 4); + } + /// milliseconds + @org.bridj.ann.CLong + @Field(4) + public XScreenSaverInfo idle(long idle) { + this.io.setCLongField(this, 4, idle); + return this; + } + /// events + @org.bridj.ann.CLong + @Field(5) + public long event_mask() { + return this.io.getCLongField(this, 5); + } + /// events + @org.bridj.ann.CLong + @Field(5) + public XScreenSaverInfo event_mask(long event_mask) { + this.io.setCLongField(this, 5, event_mask); + return this; + } + } + + public static native Pointer<XScreenSaverInfo> XScreenSaverAllocInfo(); + public static native int XScreenSaverQueryInfo(Display dpy, Drawable drawable, Pointer<XScreenSaverInfo> saver_info); +} Modified: jnijnajntest/src/main/java/org/test/testjna/unix/UnixSystemInfo.java =================================================================== --- jnijnajntest/src/main/java/org/test/testjna/unix/UnixSystemInfo.java 2012-05-30 17:51:18 UTC (rev 550) +++ jnijnajntest/src/main/java/org/test/testjna/unix/UnixSystemInfo.java 2012-06-29 19:35:30 UTC (rev 551) @@ -131,8 +131,7 @@ } // free resources - // TODO should be freed - //X11.INSTANCE.XFree(screenSaverInfo); + X11.INSTANCE.XFree(screenSaverInfo.getPointer()); } // free resources
participants (1)
-
echatellier@users.nuiton.org