# HG changeset patch # User andrew # Date 1329228071 0 # Node ID cfe9f71da9f48f0dd3e2c151e9d9e28e9d6b2bf5 # Parent 43bf4d62a7726eec38545f428451467252a95cda# Parent c705a1cdc132f52078f7f92a67439939cd52261c Merge diff -r 43bf4d62a772 -r cfe9f71da9f4 make/sun/xawt/mapfile-vers --- a/make/sun/xawt/mapfile-vers Sun Feb 05 15:35:59 2012 +0000 +++ b/make/sun/xawt/mapfile-vers Tue Feb 14 14:01:11 2012 +0000 @@ -322,6 +322,8 @@ Java_sun_awt_X11_XlibWrapper_XSynchronize; Java_java_awt_FileDialog_initIDs; Java_sun_awt_X11_XWindow_initIDs; + Java_sun_awt_X11_XWindowPeer_getLocalHostname; + Java_sun_awt_X11_XWindowPeer_getJvmPID; Java_sun_java2d_opengl_OGLContext_getOGLIdString; Java_sun_java2d_opengl_OGLMaskFill_maskFill; diff -r 43bf4d62a772 -r cfe9f71da9f4 src/solaris/classes/sun/awt/X11/XWindowPeer.java --- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java Sun Feb 05 15:35:59 2012 +0000 +++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java Tue Feb 14 14:01:11 2012 +0000 @@ -208,12 +208,19 @@ return name; } + private static native String getLocalHostname(); + private static native int getJvmPID(); + void postInit(XCreateWindowParams params) { super.postInit(params); // Init WM_PROTOCOLS atom initWMProtocols(); + // Set _NET_WM_PID and WM_CLIENT_MACHINE using this JVM + XAtom.get("WM_CLIENT_MACHINE").setProperty(getWindow(), getLocalHostname()); + XAtom.get("_NET_WM_PID").setCard32Property(getWindow(), getJvmPID()); + // Set WM_TRANSIENT_FOR and group_leader Window t_window = (Window)target; Window owner = t_window.getOwner(); diff -r 43bf4d62a772 -r cfe9f71da9f4 src/solaris/native/sun/xawt/XToolkit.c --- a/src/solaris/native/sun/xawt/XToolkit.c Sun Feb 05 15:35:59 2012 +0000 +++ b/src/solaris/native/sun/xawt/XToolkit.c Tue Feb 14 14:01:11 2012 +0000 @@ -47,6 +47,8 @@ #include "java_awt_TrayIcon.h" #include +#include + uint32_t awt_NumLockMask = 0; Boolean awt_ModLockIsShiftLock = False; @@ -1087,3 +1089,38 @@ return local_num_buttons; } + +/* + * Class: sun_awt_X11_XWindowPeer + * Method: getJvmPID + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_sun_awt_X11_XWindowPeer_getJvmPID +(JNIEnv *env, jclass cls) +{ + /* Return the JVM's PID. */ + return getpid(); +} + +#ifndef HOST_NAME_MAX +#define HOST_NAME_MAX 1024 /* Overestimated */ +#endif + +/* + * Class: sun_awt_X11_XWindowPeer + * Method: getLocalHostname + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_sun_awt_X11_XWindowPeer_getLocalHostname +(JNIEnv *env, jclass cls) +{ + /* Return the machine's FQDN. */ + char hostname[HOST_NAME_MAX + 1]; + if (gethostname(hostname, HOST_NAME_MAX + 1) == 0) { + hostname[HOST_NAME_MAX] = '\0'; + jstring res = (*env)->NewStringUTF(env, hostname); + return res; + } + + return (jstring)NULL; +}