< prev index next >
src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m
Print this page
*** 26,35 ****
--- 26,36 ----
#include "splashscreen_impl.h"
#import <Cocoa/Cocoa.h>
#import <objc/objc-auto.h>
+ #include <Security/AuthSession.h>
#import <JavaNativeFoundation/JavaNativeFoundation.h>
#import "NSApplicationAWT.h"
#include <sys/time.h>
#include <pthread.h>
*** 182,193 ****
}
[pool drain];
return JNI_FALSE;
}
! void
SplashInitPlatform(Splash * splash) {
pthread_mutex_init(&splash->lock, NULL);
splash->maskRequired = 0;
--- 183,217 ----
}
[pool drain];
return JNI_FALSE;
}
! static int isInAquaSession() {
! // environment variable to bypass the aqua session check
! char *ev = getenv("AWT_FORCE_HEADFUL");
! if (ev && (strncasecmp(ev, "true", 4) == 0)) {
! // if "true" then tell the caller we're in
! // an Aqua session without actually checking
! return 1;
! }
! // Is the WindowServer available?
! SecuritySessionId session_id;
! SessionAttributeBits session_info;
! OSStatus status = SessionGetInfo(callerSecuritySession, &session_id, &session_info);
! if (status == noErr) {
! if (session_info & sessionHasGraphicAccess) {
! return 1;
! }
! }
! return 0;
! }
!
! int
SplashInitPlatform(Splash * splash) {
+ if (!isInAquaSession()) {
+ return 0;
+ }
pthread_mutex_init(&splash->lock, NULL);
splash->maskRequired = 0;
*** 204,213 ****
--- 228,238 ----
if (!isSWTRunning()) {
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
[NSApplicationAWT runAWTLoopWithApp:[NSApplicationAWT sharedApplication]];
}];
}
+ return 1;
}
void
SplashCleanupPlatform(Splash * splash) {
splash->maskRequired = 0;
< prev index next >