10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.java2d.opengl; 27 28 import java.awt.AWTException; 29 import java.awt.BufferCapabilities; 30 import java.awt.BufferCapabilities.FlipContents; 31 import java.awt.Color; 32 import java.awt.Component; 33 import java.awt.Graphics; 34 import java.awt.Graphics2D; 35 import java.awt.Image; 36 import java.awt.ImageCapabilities; 37 import java.awt.Transparency; 38 import java.awt.color.ColorSpace; 39 import java.awt.image.BufferedImage; 40 import java.awt.image.ColorModel; 41 import java.awt.image.DataBuffer; 42 import java.awt.image.DirectColorModel; 43 import java.awt.image.VolatileImage; 44 import java.awt.image.WritableRaster; 45 import sun.awt.X11ComponentPeer; 46 import sun.awt.X11GraphicsConfig; 47 import sun.awt.X11GraphicsDevice; 48 import sun.awt.X11GraphicsEnvironment; 49 import sun.awt.image.OffScreenImage; 50 import sun.awt.image.SunVolatileImage; 51 import sun.awt.image.SurfaceManager; 52 import sun.java2d.SunGraphics2D; 53 import sun.java2d.Surface; 54 import sun.java2d.SurfaceData; 55 import sun.java2d.pipe.hw.AccelSurface; 56 import sun.java2d.pipe.hw.AccelTypedVolatileImage; 57 import sun.java2d.pipe.hw.ContextCapabilities; 58 import static sun.java2d.opengl.OGLSurfaceData.*; 59 import static sun.java2d.opengl.OGLContext.*; 60 import static sun.java2d.opengl.OGLContext.OGLContextCaps.*; 61 import sun.java2d.opengl.GLXSurfaceData.GLXVSyncOffScreenSurfaceData; 62 import sun.java2d.pipe.hw.AccelDeviceEventListener; 63 import sun.java2d.pipe.hw.AccelDeviceEventNotifier; 64 65 public class GLXGraphicsConfig 66 extends X11GraphicsConfig 67 implements OGLGraphicsConfig 68 { 69 private static ImageCapabilities imageCaps = new GLXImageCaps(); 70 private BufferCapabilities bufferCaps; 71 private long pConfigInfo; 72 private ContextCapabilities oglCaps; 73 private OGLContext context; 74 75 private static native long getGLXConfigInfo(int screennum, int visualnum); 76 private static native int getOGLCapabilities(long configInfo); 77 private native void initConfig(long aData, long ctxinfo); 78 79 private GLXGraphicsConfig(X11GraphicsDevice device, int visualnum, 80 long configInfo, ContextCapabilities oglCaps) 81 { 82 super(device, visualnum, 0, 0, 83 (oglCaps.getCaps() & CAPS_DOUBLEBUFFERED) != 0); 408 transparency, type); 409 Surface sd = vi.getDestSurface(); 410 if (!(sd instanceof AccelSurface) || 411 ((AccelSurface)sd).getType() != type) 412 { 413 vi.flush(); 414 vi = null; 415 } 416 417 return vi; 418 } 419 420 /** 421 * {@inheritDoc} 422 * 423 * @see sun.java2d.pipe.hw.AccelGraphicsConfig#getContextCapabilities 424 */ 425 @Override 426 public ContextCapabilities getContextCapabilities() { 427 return oglCaps; 428 } 429 430 @Override 431 public void addDeviceEventListener(AccelDeviceEventListener l) { 432 AccelDeviceEventNotifier.addListener(l, screen.getScreen()); 433 } 434 435 @Override 436 public void removeDeviceEventListener(AccelDeviceEventListener l) { 437 AccelDeviceEventNotifier.removeListener(l); 438 } 439 } | 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.java2d.opengl; 27 28 import java.awt.AWTException; 29 import java.awt.BufferCapabilities; 30 import java.awt.Color; 31 import java.awt.Component; 32 import java.awt.Graphics; 33 import java.awt.Graphics2D; 34 import java.awt.Image; 35 import java.awt.ImageCapabilities; 36 import java.awt.Transparency; 37 import java.awt.color.ColorSpace; 38 import java.awt.image.BufferedImage; 39 import java.awt.image.ColorModel; 40 import java.awt.image.DataBuffer; 41 import java.awt.image.DirectColorModel; 42 import java.awt.image.VolatileImage; 43 import java.awt.image.WritableRaster; 44 import sun.awt.X11ComponentPeer; 45 import sun.awt.X11GraphicsConfig; 46 import sun.awt.X11GraphicsDevice; 47 import sun.awt.X11GraphicsEnvironment; 48 import sun.awt.image.OffScreenImage; 49 import sun.awt.image.SunVolatileImage; 50 import sun.awt.image.SurfaceManager; 51 import sun.java2d.SunGraphics2D; 52 import sun.java2d.Surface; 53 import sun.java2d.SurfaceData; 54 import sun.java2d.pipe.hw.AccelSurface; 55 import sun.java2d.pipe.hw.AccelTypedVolatileImage; 56 import sun.java2d.pipe.hw.ContextCapabilities; 57 import static sun.java2d.opengl.OGLSurfaceData.*; 58 import static sun.java2d.opengl.OGLContext.*; 59 import static sun.java2d.opengl.OGLContext.OGLContextCaps.*; 60 import sun.java2d.opengl.GLXSurfaceData.GLXVSyncOffScreenSurfaceData; 61 62 public class GLXGraphicsConfig 63 extends X11GraphicsConfig 64 implements OGLGraphicsConfig 65 { 66 private static ImageCapabilities imageCaps = new GLXImageCaps(); 67 private BufferCapabilities bufferCaps; 68 private long pConfigInfo; 69 private ContextCapabilities oglCaps; 70 private OGLContext context; 71 72 private static native long getGLXConfigInfo(int screennum, int visualnum); 73 private static native int getOGLCapabilities(long configInfo); 74 private native void initConfig(long aData, long ctxinfo); 75 76 private GLXGraphicsConfig(X11GraphicsDevice device, int visualnum, 77 long configInfo, ContextCapabilities oglCaps) 78 { 79 super(device, visualnum, 0, 0, 80 (oglCaps.getCaps() & CAPS_DOUBLEBUFFERED) != 0); 405 transparency, type); 406 Surface sd = vi.getDestSurface(); 407 if (!(sd instanceof AccelSurface) || 408 ((AccelSurface)sd).getType() != type) 409 { 410 vi.flush(); 411 vi = null; 412 } 413 414 return vi; 415 } 416 417 /** 418 * {@inheritDoc} 419 * 420 * @see sun.java2d.pipe.hw.AccelGraphicsConfig#getContextCapabilities 421 */ 422 @Override 423 public ContextCapabilities getContextCapabilities() { 424 return oglCaps; 425 } 426 } |