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; ! } }