< prev index next >
modules/web/src/main/java/com/sun/webkit/Disposer.java
Print this page
rev 9728 : 8139317: [Mac] SecurityException when constructing WebView from JFXPanel application
Reviewed-by:
*** 30,39 ****
--- 30,40 ----
package com.sun.webkit;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
+ import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
*** 56,69 ****
private static final Disposer disposerInstance = new Disposer();
private static final Set<WeakDisposerRecord> records =
new HashSet<WeakDisposerRecord>();
static {
! Thread t = new Thread(disposerInstance, "Disposer");
t.setDaemon(true);
t.setPriority(Thread.MAX_PRIORITY);
t.start();
}
/**
* Registers the object and the native data for later disposal.
* @param target Object to be registered
--- 57,83 ----
private static final Disposer disposerInstance = new Disposer();
private static final Set<WeakDisposerRecord> records =
new HashSet<WeakDisposerRecord>();
static {
! java.security.AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
! /*
! * The thread must be a member of a thread group
! * which will not get GCed before VM exit.
! * Make its parent the top-level thread group.
! */
! ThreadGroup tg = Thread.currentThread().getThreadGroup();
! for (ThreadGroup tgn = tg;
! tgn != null;
! tg = tgn, tgn = tg.getParent());
!
! Thread t = new Thread(tg, disposerInstance, "Disposer");
t.setDaemon(true);
t.setPriority(Thread.MAX_PRIORITY);
t.start();
+ return null;
+ });
}
/**
* Registers the object and the native data for later disposal.
* @param target Object to be registered
< prev index next >