Ejemplo n.º 1
0
  protected void createNativeImpl() {
    if (0 != getParentWindowHandle()) {
      throw new NativeWindowException("GDL Window does not support window parenting");
    }
    AbstractGraphicsScreen aScreen = getScreen().getGraphicsScreen();
    AbstractGraphicsDevice aDevice = getScreen().getDisplay().getGraphicsDevice();

    config =
        GraphicsConfigurationFactory.getFactory(aDevice)
            .chooseGraphicsConfiguration(
                capsRequested, capsRequested, capabilitiesChooser, aScreen);
    if (config == null) {
      throw new NativeWindowException(
          "Error choosing GraphicsConfiguration creating window: " + this);
    }

    synchronized (Window.class) {
      setWindowHandle(nextWindowHandle++); // just a marker

      surfaceHandle =
          CreateSurface(
              aDevice.getHandle(),
              getScreen().getWidth(),
              getScreen().getHeight(),
              x,
              y,
              width,
              height);
      if (surfaceHandle == 0) {
        throw new NativeWindowException("Error creating window");
      }
    }
  }
 public X11GLXGraphicsConfigurationFactory() {
   GraphicsConfigurationFactory.registerFactory(
       javax.media.nativewindow.x11.X11GraphicsDevice.class, this);
 }
 public MacOSXAWTCGLGraphicsConfigurationFactory() {
   GraphicsConfigurationFactory.registerFactory(
       javax.media.nativewindow.awt.AWTGraphicsDevice.class, this);
 }
  public AbstractGraphicsConfiguration chooseGraphicsConfiguration(
      Capabilities capabilities, CapabilitiesChooser chooser, AbstractGraphicsScreen absScreen) {
    GraphicsDevice device = null;
    if (absScreen != null && !(absScreen instanceof AWTGraphicsScreen)) {
      throw new IllegalArgumentException(
          "This GraphicsConfigurationFactory accepts only AWTGraphicsScreen objects");
    }

    if (null == absScreen) {
      absScreen = AWTGraphicsScreen.createScreenDevice(-1);
    }
    AWTGraphicsScreen awtScreen = (AWTGraphicsScreen) absScreen;
    device = ((AWTGraphicsDevice) awtScreen.getDevice()).getGraphicsDevice();

    if (capabilities != null && !(capabilities instanceof GLCapabilities)) {
      throw new IllegalArgumentException(
          "This GraphicsConfigurationFactory accepts only GLCapabilities objects");
    }

    if (chooser != null && !(chooser instanceof GLCapabilitiesChooser)) {
      throw new IllegalArgumentException(
          "This GraphicsConfigurationFactory accepts only GLCapabilitiesChooser objects");
    }

    if (DEBUG) {
      System.err.println("MacOSXAWTCGLGraphicsConfigurationFactory: got " + absScreen);
    }

    long displayHandle = 0;

    MacOSXGraphicsDevice macDevice = new MacOSXGraphicsDevice();
    DefaultGraphicsScreen macScreen = new DefaultGraphicsScreen(macDevice, awtScreen.getIndex());
    if (DEBUG) {
      System.err.println("MacOSXAWTCGLGraphicsConfigurationFactory: made " + macScreen);
    }

    GraphicsConfiguration gc = device.getDefaultConfiguration();
    AWTGraphicsConfiguration.setupCapabilitiesRGBABits(capabilities, gc);
    if (DEBUG) {
      System.err.println("AWT Colormodel compatible: " + capabilities);
    }

    MacOSXCGLGraphicsConfiguration macConfig =
        (MacOSXCGLGraphicsConfiguration)
            GraphicsConfigurationFactory.getFactory(macDevice)
                .chooseGraphicsConfiguration(capabilities, chooser, macScreen);

    if (macConfig == null) {
      throw new GLException(
          "Unable to choose a GraphicsConfiguration: "
              + capabilities
              + ",\n\t"
              + chooser
              + "\n\t"
              + macScreen);
    }

    // FIXME: we have nothing to match .. so choose the default
    return new AWTGraphicsConfiguration(
        awtScreen,
        macConfig.getChosenCapabilities(),
        macConfig.getRequestedCapabilities(),
        gc,
        macConfig);
  }
Ejemplo n.º 5
0
  protected void createNativeImpl() {
    final ScreenDriver screen = (ScreenDriver) getScreen();
    final DisplayDriver display = (DisplayDriver) screen.getDisplay();
    final AbstractGraphicsDevice edtDevice = display.getGraphicsDevice();

    // Decoupled X11 Device/Screen allowing X11 display lock-free off-thread rendering
    final long renderDeviceHandle = X11Util.openDisplay(edtDevice.getConnection());
    if (0 == renderDeviceHandle) {
      throw new RuntimeException("Error creating display(EDT): " + edtDevice.getConnection());
    }
    renderDevice =
        new X11GraphicsDevice(
            renderDeviceHandle, AbstractGraphicsDevice.DEFAULT_UNIT, true /* owner */);
    final AbstractGraphicsScreen renderScreen =
        new X11GraphicsScreen(renderDevice, screen.getIndex());

    final GraphicsConfigurationFactory factory =
        GraphicsConfigurationFactory.getFactory(display.getGraphicsDevice(), capsRequested);
    final AbstractGraphicsConfiguration cfg =
        factory.chooseGraphicsConfiguration(
            capsRequested,
            capsRequested,
            capabilitiesChooser,
            renderScreen,
            VisualIDHolder.VID_UNDEFINED);
    if (DEBUG_IMPLEMENTATION) {
      System.err.println(
          "X11Window.createNativeImpl() factory: " + factory + ", chosen config: " + cfg);
    }
    if (null == cfg) {
      throw new NativeWindowException(
          "Error choosing GraphicsConfiguration creating window: " + this);
    }
    final int visualID = cfg.getVisualID(VIDType.NATIVE);
    if (VisualIDHolder.VID_UNDEFINED == visualID) {
      throw new NativeWindowException("Chosen Configuration w/o native visual ID: " + cfg);
    }
    setGraphicsConfiguration(cfg);
    final int flags = getReconfigureFlags(0, true) & (FLAG_IS_ALWAYSONTOP | FLAG_IS_UNDECORATED);
    edtDevice.lock();
    try {
      setWindowHandle(
          CreateWindow0(
              getParentWindowHandle(),
              edtDevice.getHandle(),
              screen.getIndex(),
              visualID,
              display.getJavaObjectAtom(),
              display.getWindowDeleteAtom(),
              getX(),
              getY(),
              getWidth(),
              getHeight(),
              autoPosition(),
              flags));
    } finally {
      edtDevice.unlock();
    }
    windowHandleClose = getWindowHandle();
    if (0 == windowHandleClose) {
      throw new NativeWindowException("Error creating window");
    }
  }