@Override public int getScreenIndex() { return config.getScreen().getIndex(); }
@Override public final int getScreenIndex() { return getGraphicsConfiguration().getScreen().getIndex(); }
@Override public final int getScreenIndex() { return getGraphicsConfiguration().getScreen().getIndex(); }
public static Screen createCompatibleScreen(final NativeWindow parent, final Screen childScreen) { // Get parent's NativeWindow details final AbstractGraphicsConfiguration parentConfig = parent.getGraphicsConfiguration(); final AbstractGraphicsScreen parentScreen = parentConfig.getScreen(); final AbstractGraphicsDevice parentDevice = parentScreen.getDevice(); if(null != childScreen) { // check if child Display/Screen is compatible already final DisplayImpl childDisplay = (DisplayImpl) childScreen.getDisplay(); final String parentDisplayName = childDisplay.validateDisplayName(null, parentDevice.getHandle()); final String childDisplayName = childDisplay.getName(); final boolean displayEqual = parentDisplayName.equals( childDisplayName ); final boolean screenEqual = parentScreen.getIndex() == childScreen.getIndex(); if(DEBUG_IMPLEMENTATION) { System.err.println("NewtFactory.createCompatibleScreen: Display: "+ parentDisplayName+" =? "+childDisplayName+" : "+displayEqual+"; Screen: "+ parentScreen.getIndex()+" =? "+childScreen.getIndex()+" : "+screenEqual); } if( displayEqual && screenEqual ) { // match: display/screen return childScreen; } } // Prep NEWT's Display and Screen according to the parent final String type = NativeWindowFactory.getNativeWindowType(true); final Display display = NewtFactory.createDisplay(type, parentDevice.getHandle(), true); return NewtFactory.createScreen(display, parentScreen.getIndex()); } }
public static boolean isScreenCompatible(final NativeWindow parent, final Screen childScreen) { // Get parent's NativeWindow details final AbstractGraphicsConfiguration parentConfig = parent.getGraphicsConfiguration(); final AbstractGraphicsScreen parentScreen = parentConfig.getScreen(); final AbstractGraphicsDevice parentDevice = parentScreen.getDevice(); final DisplayImpl childDisplay = (DisplayImpl) childScreen.getDisplay(); final String parentDisplayName = childDisplay.validateDisplayName(null, parentDevice.getHandle()); final String childDisplayName = childDisplay.getName(); if( ! parentDisplayName.equals( childDisplayName ) ) { return false; } if( parentScreen.getIndex() != childScreen.getIndex() ) { return false; } return true; }
final DeviceScreenID deviceScreenID = new DeviceScreenID(screen.getDevice().getConnection(), screen.getIndex()); if( null == screen2OrigGammaRamp.get(deviceScreenID) ) {
@Override public synchronized final void resetDisplayGamma(final NativeSurface surface) { if( NativeSurface.LOCK_SURFACE_NOT_READY >= surface.lockSurface() ) { return; } try { final AbstractGraphicsScreen screen = surface.getGraphicsConfiguration().getScreen(); final DeviceScreenID deviceScreenID = new DeviceScreenID(screen.getDevice().getConnection(), screen.getIndex()); final Buffer originalGammaRamp = screen2OrigGammaRamp.remove(deviceScreenID); if( null != originalGammaRamp ) { resetGammaRamp(surface, originalGammaRamp); } } finally { surface.unlockSurface(); } }
public static long createCompatibleX11ChildWindow(final AbstractGraphicsScreen screen, final Control swtControl, final int visualID, final int width, final int height) { final long handle = getHandle(swtControl); final long parentWindow = gdk_widget_get_window( handle ); gdk_window_set_back_pixmap (parentWindow, 0, false); final long x11ParentHandle = gdk_window_get_xwindow(parentWindow); final long x11WindowHandle = X11Lib.CreateWindow(x11ParentHandle, screen.getDevice().getHandle(), screen.getIndex(), visualID, width, height, true, true); return x11WindowHandle; }
public static XVisualInfo getXVisualInfo(final AbstractGraphicsScreen screen, final int visualID) { final XVisualInfo xvi_temp = XVisualInfo.create(); xvi_temp.setVisualid(visualID); xvi_temp.setScreen(screen.getIndex()); final int num[] = { -1 }; final long display = screen.getDevice().getHandle(); final XVisualInfo[] xvis = X11Lib.XGetVisualInfo(display, X11Lib.VisualIDMask|X11Lib.VisualScreenMask, xvi_temp, num, 0); if(xvis==null || num[0]<1) { return null; } return XVisualInfo.create(xvis[0]); }
throw new GLException("Refreshing native EGLConfig handle failed with error "+EGLContext.toHexString(EGL.eglGetError())+": "+eglDevice+", "+capsChosen+" of "+aConfig); final AbstractGraphicsScreen eglScreen = new DefaultGraphicsScreen(eglDevice, aConfig.getScreen().getIndex()); eglConfig = new EGLGraphicsConfiguration(eglScreen, capsChosen, capsRequested, null); if(DEBUG) { final AbstractGraphicsScreen eglScreen = new DefaultGraphicsScreen(eglDevice, aConfig.getScreen().getIndex()); eglConfig = EGLGraphicsConfigurationFactory.chooseGraphicsConfigurationStatic( capsRequested, capsRequested, null, eglScreen, aConfig.getVisualID(VIDType.NATIVE), false /* forceTransparencyFlag */);
fixedCaps = GLGraphicsConfigurationUtil.fixOpaqueGLCapabilities(_fixedCaps, chosenCaps.isBackgroundOpaque()); final int sRefreshRate = OSXUtil.GetScreenRefreshRate(drawable.getNativeSurface().getGraphicsConfiguration().getScreen().getIndex()); if( 0 < sRefreshRate ) { screenVSyncTimeout = 1000000 / sRefreshRate;
@Override public Point getLocationOnScreen(final Point point) { final Point los; // client window location on screen if( SWTAccessor.isOSX ) { // let getLOS provide the point where the child window may be placed // from, as taken from SWT Control.toDisplay(); los = getParentLocationOnScreen(); } else if (SWTAccessor.isX11) { final AbstractGraphicsScreen s = config.getScreen(); los = X11Lib.GetRelativeLocation(s.getDevice().getHandle(), s.getIndex(), nativeWindowHandle, 0 /*root win*/, 0, 0); } else if (SWTAccessor.isWindows) { los = GDIUtil.GetRelativeLocation( nativeWindowHandle, 0 /*root win*/, 0, 0); } else { // fall-back to 0/0 los = new Point(0, 0); } if(null!=point) { return point.translate(los); } else { return los; } }
final ProxySurface proxySurface = glFactory.createProxySurface(device, screen.getIndex(), nativeWindowHandle, capsRequested, capsChooser, swtCanvasUpStreamHook);
private void createPixmap() { final NativeSurface ns = getNativeSurface(); final X11GLXGraphicsConfiguration config = (X11GLXGraphicsConfiguration) ns.getGraphicsConfiguration(); final XVisualInfo vis = config.getXVisualInfo(); final int bitsPerPixel = vis.getDepth(); final AbstractGraphicsScreen aScreen = config.getScreen(); final AbstractGraphicsDevice aDevice = aScreen.getDevice(); final long dpy = aDevice.getHandle(); final int screen = aScreen.getIndex(); pixmap = X11Lib.XCreatePixmap(dpy, X11Lib.RootWindow(dpy, screen), surface.getSurfaceWidth(), surface.getSurfaceHeight(), bitsPerPixel); if (pixmap == 0) { throw new GLException("XCreatePixmap failed"); } final long drawable = GLX.glXCreateGLXPixmap(dpy, vis, pixmap); if (drawable == 0) { X11Lib.XFreePixmap(dpy, pixmap); pixmap = 0; throw new GLException("glXCreateGLXPixmap failed"); } ((MutableSurface)ns).setSurfaceHandle(drawable); if (DEBUG) { System.err.println(getThreadName()+": Created pixmap " + toHexString(pixmap) + ", GLXPixmap " + toHexString(drawable) + ", display " + toHexString(dpy)); } }
private static XVisualInfo getXVisualInfoImpl(final AbstractGraphicsScreen screen, final CapabilitiesImmutable capabilities, final int c_class) { XVisualInfo ret = null; final int[] num = { -1 }; final XVisualInfo vinfo_template = XVisualInfo.create(); vinfo_template.setScreen(screen.getIndex()); vinfo_template.setC_class(c_class); final long display = screen.getDevice().getHandle(); final XVisualInfo[] vinfos = X11Lib.XGetVisualInfo(display, X11Lib.VisualScreenMask, vinfo_template, num, 0); XVisualInfo best=null; final int rdepth = capabilities.getRedBits() + capabilities.getGreenBits() + capabilities.getBlueBits() + capabilities.getAlphaBits(); for (int i = 0; vinfos!=null && i < num[0]; i++) { if ( best == null || best.getDepth() < vinfos[i].getDepth() ) { best = vinfos[i]; if(rdepth <= best.getDepth()) break; } } if ( null!=best && ( rdepth <= best.getDepth() || 24 == best.getDepth()) ) { ret = XVisualInfo.create(best); } best = null; return ret; } }
final EGLGraphicsDevice eglDevice = EGLDisplayUtil.eglCreateEGLGraphicsDevice(aDevice.getNativeDisplayID(), aDevice.getConnection(), aDevice.getUnitID()); eglDevice.open(); final DefaultGraphicsScreen eglScreen = new DefaultGraphicsScreen(eglDevice, aScreen.getIndex());
final AbstractGraphicsDevice parentDevice = parentScreen.getDevice(); final Display display = NewtFactory.createDisplay(type, parentDevice.getHandle(), true); screen = NewtFactory.createScreen(display, parentScreen.getIndex()); } else { final Display display = NewtFactory.createDisplay(type, null, true); // local display