提交 b46fefbb 编写于 作者: R robm

Merge

...@@ -158,6 +158,7 @@ SUNWprivate_1.1 { ...@@ -158,6 +158,7 @@ SUNWprivate_1.1 {
Java_sun_awt_X11_XRobotPeer_mouseReleaseImpl; Java_sun_awt_X11_XRobotPeer_mouseReleaseImpl;
Java_sun_awt_X11_XRobotPeer_mouseWheelImpl; Java_sun_awt_X11_XRobotPeer_mouseWheelImpl;
Java_sun_awt_X11_XRobotPeer_setup; Java_sun_awt_X11_XRobotPeer_setup;
Java_sun_awt_X11_XRobotPeer_loadNativeLibraries;
Java_sun_awt_X11_XToolkit_getNumberOfButtonsImpl; Java_sun_awt_X11_XToolkit_getNumberOfButtonsImpl;
Java_java_awt_Component_initIDs; Java_java_awt_Component_initIDs;
Java_java_awt_Container_initIDs; Java_java_awt_Container_initIDs;
......
...@@ -88,8 +88,8 @@ class IdentityScope extends Identity { ...@@ -88,8 +88,8 @@ class IdentityScope extends Identity {
try { try {
Class.forName(classname); Class.forName(classname);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
//Security.error("unable to establish a system scope from " + System.err.println("unable to establish a system scope from " +
// classname); classname);
e.printStackTrace(); e.printStackTrace();
} }
} }
......
...@@ -1051,7 +1051,7 @@ public abstract class Signature extends SignatureSpi { ...@@ -1051,7 +1051,7 @@ public abstract class Signature extends SignatureSpi {
debug.println("Further warnings of this type will " debug.println("Further warnings of this type will "
+ "be suppressed"); + "be suppressed");
} }
new Exception("Call trace").printStackTrace(); new Exception("Debug call trace").printStackTrace();
} }
} }
Exception lastException = null; Exception lastException = null;
......
...@@ -275,7 +275,7 @@ public final class ProviderList { ...@@ -275,7 +275,7 @@ public final class ProviderList {
} }
if (debug != null) { if (debug != null) {
debug.println("Loading all providers"); debug.println("Loading all providers");
new Exception("Call trace").printStackTrace(); new Exception("Debug Info. Call trace:").printStackTrace();
} }
int n = 0; int n = 0;
for (int i = 0; i < configs.length; i++) { for (int i = 0; i < configs.length; i++) {
......
...@@ -347,7 +347,6 @@ public class PKCS8Key implements PrivateKey { ...@@ -347,7 +347,6 @@ public class PKCS8Key implements PrivateKey {
} }
} catch (IOException e) { } catch (IOException e) {
// e.printStackTrace ();
throw new InvalidKeyException("IOException : " + throw new InvalidKeyException("IOException : " +
e.getMessage()); e.getMessage());
} }
......
...@@ -186,6 +186,7 @@ public class AuthPolicyFile extends javax.security.auth.Policy { ...@@ -186,6 +186,7 @@ public class AuthPolicyFile extends javax.security.auth.Policy {
} catch (Exception e) { } catch (Exception e) {
// ignore, treat it like we have no keystore // ignore, treat it like we have no keystore
if (debug != null) { if (debug != null) {
debug.println("Debug info only. No keystore.");
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
...@@ -260,7 +261,7 @@ public class AuthPolicyFile extends javax.security.auth.Policy { ...@@ -260,7 +261,7 @@ public class AuthPolicyFile extends javax.security.auth.Policy {
loaded_one = true; loaded_one = true;
} catch (Exception e) { } catch (Exception e) {
if (debug != null) { if (debug != null) {
debug.println("error reading policy " + e); debug.println("Debug info only. Error reading policy " + e);
e.printStackTrace(); e.printStackTrace();
} }
// ignore that policy // ignore that policy
......
...@@ -434,18 +434,6 @@ abstract class DSA extends SignatureSpi { ...@@ -434,18 +434,6 @@ abstract class DSA extends SignatureSpi {
return printable; return printable;
} }
private static void debug(Exception e) {
if (debug) {
e.printStackTrace();
}
}
private static void debug(String s) {
if (debug) {
System.err.println(s);
}
}
/** /**
* Standard SHA224withDSA implementation as defined in FIPS186-3. * Standard SHA224withDSA implementation as defined in FIPS186-3.
*/ */
......
...@@ -563,7 +563,8 @@ public class PolicyFile extends java.security.Policy { ...@@ -563,7 +563,8 @@ public class PolicyFile extends java.security.Policy {
loaded_policy = true; loaded_policy = true;
} catch (Exception e) { } catch (Exception e) {
if (debug != null) { if (debug != null) {
debug.println("error reading policy "+e); debug.println(
"Debug info only. Error reading policy " +e);
e.printStackTrace(); e.printStackTrace();
} }
// ignore that policy // ignore that policy
...@@ -616,6 +617,7 @@ public class PolicyFile extends java.security.Policy { ...@@ -616,6 +617,7 @@ public class PolicyFile extends java.security.Policy {
} catch (Exception e) { } catch (Exception e) {
// ignore, treat it like we have no keystore // ignore, treat it like we have no keystore
if (debug != null) { if (debug != null) {
debug.println("Debug info only. Ignoring exception.");
e.printStackTrace(); e.printStackTrace();
} }
} }
......
...@@ -75,9 +75,9 @@ public class AnchorCertificates { ...@@ -75,9 +75,9 @@ public class AnchorCertificates {
} catch (Exception e) { } catch (Exception e) {
if (debug != null) { if (debug != null) {
debug.println("Error parsing cacerts"); debug.println("Error parsing cacerts");
}
e.printStackTrace(); e.printStackTrace();
} }
}
return null; return null;
} }
}); });
......
...@@ -380,7 +380,8 @@ public class SignatureFileVerifier { ...@@ -380,7 +380,8 @@ public class SignatureFileVerifier {
if (e.getMessage() != null) { if (e.getMessage() != null) {
debug.println(key + ": " + e.getMessage()); debug.println(key + ": " + e.getMessage());
} else { } else {
debug.println(key + ": " + algorithm + debug.println("Debug info only. " + key + ": " +
algorithm +
" was disabled, no exception msg given."); " was disabled, no exception msg given.");
e.printStackTrace(); e.printStackTrace();
} }
......
...@@ -124,7 +124,8 @@ public class CertificateExtensions implements CertAttrSet<Extension> { ...@@ -124,7 +124,8 @@ public class CertificateExtensions implements CertAttrSet<Extension> {
unparseableExtensions.put(ext.getExtensionId().toString(), unparseableExtensions.put(ext.getExtensionId().toString(),
new UnparseableExtension(ext, e)); new UnparseableExtension(ext, e));
if (debug != null) { if (debug != null) {
debug.println("Error parsing extension: " + ext); debug.println("Debug info only." +
" Error parsing extension: " + ext);
e.printStackTrace(); e.printStackTrace();
HexDumpEncoder h = new HexDumpEncoder(); HexDumpEncoder h = new HexDumpEncoder();
System.err.println(h.encodeBuffer(ext.getExtensionValue())); System.err.println(h.encodeBuffer(ext.getExtensionValue()));
......
...@@ -393,7 +393,6 @@ public class X509Key implements PublicKey { ...@@ -393,7 +393,6 @@ public class X509Key implements PublicKey {
throw new InvalidKeyException ("excess key data"); throw new InvalidKeyException ("excess key data");
} catch (IOException e) { } catch (IOException e) {
// e.printStackTrace ();
throw new InvalidKeyException("IOException: " + throw new InvalidKeyException("IOException: " +
e.getMessage()); e.getMessage());
} }
......
...@@ -34,6 +34,10 @@ import sun.awt.X11GraphicsConfig; ...@@ -34,6 +34,10 @@ import sun.awt.X11GraphicsConfig;
class XRobotPeer implements RobotPeer { class XRobotPeer implements RobotPeer {
static {
loadNativeLibraries();
}
private X11GraphicsConfig xgc = null; private X11GraphicsConfig xgc = null;
/* /*
* native implementation uses some static shared data (pipes, processes) * native implementation uses some static shared data (pipes, processes)
...@@ -98,4 +102,5 @@ class XRobotPeer implements RobotPeer { ...@@ -98,4 +102,5 @@ class XRobotPeer implements RobotPeer {
private static native synchronized void keyReleaseImpl(int keycode); private static native synchronized void keyReleaseImpl(int keycode);
private static native synchronized void getRGBPixelsImpl(X11GraphicsConfig xgc, int x, int y, int width, int height, int pixelArray[]); private static native synchronized void getRGBPixelsImpl(X11GraphicsConfig xgc, int x, int y, int width, int height, int pixelArray[]);
private static native void loadNativeLibraries();
} }
...@@ -27,6 +27,9 @@ ...@@ -27,6 +27,9 @@
#error This file should not be included in headless library #error This file should not be included in headless library
#endif #endif
#include "jvm_md.h"
#include <dlfcn.h>
#include "awt_p.h" #include "awt_p.h"
#include "awt_GraphicsEnv.h" #include "awt_GraphicsEnv.h"
#define XK_MISCELLANY #define XK_MISCELLANY
...@@ -49,11 +52,46 @@ ...@@ -49,11 +52,46 @@
#include <sys/socket.h> #include <sys/socket.h>
#endif #endif
static Bool (*compositeQueryExtension) (Display*, int*, int*);
static Status (*compositeQueryVersion) (Display*, int*, int*);
static Window (*compositeGetOverlayWindow) (Display *, Window);
extern struct X11GraphicsConfigIDs x11GraphicsConfigIDs; extern struct X11GraphicsConfigIDs x11GraphicsConfigIDs;
static jint * masks; static jint * masks;
static jint num_buttons; static jint num_buttons;
static void *xCompositeHandle;
static const char* XCOMPOSITE = JNI_LIB_NAME("Xcomposite");
static const char* XCOMPOSITE_VERSIONED = VERSIONED_JNI_LIB_NAME("Xcomposite", "1");
static Bool checkXCompositeFunctions(void) {
return (compositeQueryExtension != NULL &&
compositeQueryVersion != NULL &&
compositeGetOverlayWindow != NULL);
}
static void initXCompositeFunctions(void) {
if (xCompositeHandle == NULL) {
xCompositeHandle = dlopen(XCOMPOSITE, RTLD_LAZY | RTLD_GLOBAL);
if (xCompositeHandle == NULL) {
xCompositeHandle = dlopen(XCOMPOSITE_VERSIONED, RTLD_LAZY | RTLD_GLOBAL);
}
}
//*(void **)(&asyncGetCallTraceFunction)
if (xCompositeHandle != NULL) {
*(void **)(&compositeQueryExtension) = dlsym(xCompositeHandle, "XCompositeQueryExtension");
*(void **)(&compositeQueryVersion) = dlsym(xCompositeHandle, "XCompositeQueryVersion");
*(void **)(&compositeGetOverlayWindow) = dlsym(xCompositeHandle, "XCompositeGetOverlayWindow");
}
if (xCompositeHandle && !checkXCompositeFunctions()) {
dlclose(xCompositeHandle);
}
}
static int32_t isXTestAvailable() { static int32_t isXTestAvailable() {
int32_t major_opcode, first_event, first_error; int32_t major_opcode, first_event, first_error;
int32_t event_basep, error_basep, majorp, minorp; int32_t event_basep, error_basep, majorp, minorp;
...@@ -88,6 +126,35 @@ static int32_t isXTestAvailable() { ...@@ -88,6 +126,35 @@ static int32_t isXTestAvailable() {
return isXTestAvailable; return isXTestAvailable;
} }
static Bool hasXCompositeOverlayExtension(Display *display) {
int xoverlay = False;
int eventBase, errorBase;
if (checkXCompositeFunctions() &&
compositeQueryExtension(display, &eventBase, &errorBase))
{
int major = 0;
int minor = 0;
compositeQueryVersion(display, &major, &minor);
if (major > 0 || minor >= 3) {
xoverlay = True;
}
}
return xoverlay;
}
static jboolean isXCompositeDisplay(Display *display, int screenNumber) {
char NET_WM_CM_Sn[25];
snprintf(NET_WM_CM_Sn, sizeof(NET_WM_CM_Sn), "_NET_WM_CM_S%d\0", screenNumber);
Atom managerSelection = XInternAtom(display, NET_WM_CM_Sn, 0);
Window owner = XGetSelectionOwner(display, managerSelection);
return owner != 0;
}
static XImage *getWindowImage(Display * display, Window window, static XImage *getWindowImage(Display * display, Window window,
int32_t x, int32_t y, int32_t x, int32_t y,
...@@ -232,6 +299,12 @@ Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl( JNIEnv *env, ...@@ -232,6 +299,12 @@ Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl( JNIEnv *env,
DASSERT(adata != NULL); DASSERT(adata != NULL);
rootWindow = XRootWindow(awt_display, adata->awt_visInfo.screen); rootWindow = XRootWindow(awt_display, adata->awt_visInfo.screen);
if (hasXCompositeOverlayExtension(awt_display) &&
isXCompositeDisplay(awt_display, adata->awt_visInfo.screen))
{
rootWindow = compositeGetOverlayWindow(awt_display, rootWindow);
}
image = getWindowImage(awt_display, rootWindow, x, y, width, height); image = getWindowImage(awt_display, rootWindow, x, y, width, height);
/* Array to use to crunch around the pixel values */ /* Array to use to crunch around the pixel values */
...@@ -412,3 +485,8 @@ Java_sun_awt_X11_XRobotPeer_mouseWheelImpl (JNIEnv *env, ...@@ -412,3 +485,8 @@ Java_sun_awt_X11_XRobotPeer_mouseWheelImpl (JNIEnv *env,
AWT_UNLOCK(); AWT_UNLOCK();
} }
JNIEXPORT void JNICALL
Java_sun_awt_X11_XRobotPeer_loadNativeLibraries (JNIEnv *env, jclass cls) {
initXCompositeFunctions();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册