modules/graphics/src/main/java/com/sun/glass/ui/monocle/NativeScreen.java
Print this page
*** 25,48 ****
package com.sun.glass.ui.monocle;
import java.nio.Buffer;
import java.nio.IntBuffer;
- public interface NativeScreen {
! public int getDepth();
! public int getNativeFormat();
! public int getWidth();
! public int getHeight();
! public int getDPI();
! public long getNativeHandle();
! public void shutdown();
!
! public void uploadPixels(Buffer b,
int x, int y, int width, int height, float alpha);
! public void swapBuffers();
! public IntBuffer getScreenCapture();
}
--- 25,86 ----
package com.sun.glass.ui.monocle;
import java.nio.Buffer;
import java.nio.IntBuffer;
+ import com.sun.glass.ui.monocle.linux.LinuxSystem;
+ import java.lang.reflect.Method;
+ import java.util.Locale;
+
+ public abstract class NativeScreen {
+ private static long glesLibraryHandle;
+ private static long eglLibraryHandle;
+ private static long nativeDisplayType;
+ private static boolean initialized;
+
+ public abstract int getDepth();
+ public abstract int getNativeFormat();
+ public abstract int getWidth();
+ public abstract int getHeight();
+ public abstract int getDPI();
+ public abstract long getNativeHandle();
+ public abstract void shutdown();
+ public static long platformGetNativeDisplay() {return 0L;};
! public abstract void uploadPixels(Buffer b,
int x, int y, int width, int height, float alpha);
! public abstract void swapBuffers();
!
! public abstract IntBuffer getScreenCapture();
! protected static boolean initPlatformLibraries() {
! LinuxSystem ls = LinuxSystem.getLinuxSystem();
! glesLibraryHandle = ls.dlopen("libGLESv2.so", LinuxSystem.RTLD_LAZY | LinuxSystem.RTLD_GLOBAL);
! eglLibraryHandle = ls.dlopen("libEGL.so", LinuxSystem.RTLD_LAZY | LinuxSystem.RTLD_GLOBAL);
! return true;
! }
!
! public static synchronized long getNativeDisplay() {
! String platformNativeScreenName;
!
! if (initialized) {
! // already initialized
! return nativeDisplayType;
! }
! String platformName = NativePlatformFactory.getNativePlatformName();
! platformNativeScreenName = "com.sun.glass.ui.monocle." + platformName + "." +
! platformName.toUpperCase(Locale.ROOT) + "Screen";
! initPlatformLibraries();
! try {
! Method platformMethod = Class.forName(platformNativeScreenName).getMethod("platformGetNativeDisplay");
! nativeDisplayType = (long)platformMethod.invoke(null);
! } catch (Exception e){
! e.printStackTrace();
! }
!
! initialized = true;
! return nativeDisplayType;
! }
}