コード例 #1
1
ファイル: X11Util.java プロジェクト: petr-s/jogl
  /**
   * Cleanup resources.
   *
   * <p>Called by {@link NativeWindowFactory#shutdown()}
   *
   * @see ToolkitProperties
   */
  public static void shutdown() {
    if (isInit) {
      synchronized (X11Util.class) {
        if (isInit) {
          final boolean isJVMShuttingDown = NativeWindowFactory.isJVMShuttingDown();
          if (DEBUG
              || ((openDisplayMap.size() > 0
                      || reusableDisplayList.size() > 0
                      || pendingDisplayList.size() > 0)
                  && (reusableDisplayList.size() != pendingDisplayList.size()
                      || !markAllDisplaysUnclosable))) {
            System.err.println(
                "X11Util.Display: Shutdown (JVM shutdown: "
                    + isJVMShuttingDown
                    + ", open (no close attempt): "
                    + openDisplayMap.size()
                    + "/"
                    + openDisplayList.size()
                    + ", reusable (open, marked uncloseable): "
                    + reusableDisplayList.size()
                    + ", pending (open in creation order): "
                    + pendingDisplayList.size()
                    + ")");
            if (DEBUG) {
              Thread.dumpStack();
            }
            if (openDisplayList.size() > 0) {
              X11Util.dumpOpenDisplayConnections();
            }
            if (DEBUG) {
              if (reusableDisplayList.size() > 0 || pendingDisplayList.size() > 0) {
                X11Util.dumpPendingDisplayConnections();
              }
            }
          }

          // Only at JVM shutdown time, since AWT impl. seems to
          // dislike closing of X11 Display's (w/ ATI driver).
          if (isJVMShuttingDown) {
            synchronized (globalLock) {
              isInit = false;
              closePendingDisplayConnections();
              openDisplayList.clear();
              reusableDisplayList.clear();
              pendingDisplayList.clear();
              openDisplayMap.clear();
              displayXineramaEnabledMap.clear();
              shutdown0();
            }
          }
        }
      }
    }
  }