< prev index next >

src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java

Print this page
rev 1571 : 8010297: Missing isLoggable() checks in logging code
Summary: Add isLoggable() checks
Reviewed-by: anthony, mchung, serb
Contributed-by: Laurent Bourges <bourges.laurent@gmail.com>


  34 /**
  35  * Helper class implementing XEmbed protocol handling routines(client side)
  36  * Window which wants to participate in a protocol should create an instance,
  37  * call install and forward all XClientMessageEvents to it.
  38  */
  39 public class XEmbedClientHelper extends XEmbedHelper implements XEventDispatcher {
  40     private static final Logger xembedLog = Logger.getLogger("sun.awt.X11.xembed.XEmbedClientHelper");
  41 
  42     private XEmbeddedFramePeer embedded;
  43     private boolean active;
  44     private long server;
  45     private boolean applicationActive;
  46 
  47     XEmbedClientHelper() {
  48         super();
  49     }
  50 
  51     void install(XEmbeddedFramePeer embedded) {
  52         this.embedded = embedded;
  53 
  54         if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Installing xembedder on " + embedded);


  55         XToolkit.addEventDispatcher(embedded.getWindow(), this);
  56         long[] info = new long[] { XEMBED_VERSION, XEMBED_MAPPED };
  57         long data = Native.card32ToData(info);
  58         try {
  59             XEmbedInfo.setAtomData(embedded.getWindow(), data, 2);
  60         } finally {
  61             unsafe.freeMemory(data);
  62         }
  63         // XEmbeddedFrame is initially created with a null parent..
  64         // Here it is reparented to the proper parent window.
  65         long parentWindow = embedded.getParentWindowHandle();
  66         if (parentWindow != 0) {
  67             XToolkit.awtLock();
  68             try {
  69                 XlibWrapper.XReparentWindow(XToolkit.getDisplay(),
  70                                             embedded.getWindow(),
  71                                             parentWindow,
  72                                             0, 0);
  73             } finally {
  74                 XToolkit.awtUnlock();
  75             }
  76         }
  77         notifyReady();
  78     }
  79 
  80     void handleClientMessage(XEvent xev) {
  81         XClientMessageEvent msg = xev.get_xclient();
  82         if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine(msg.toString());


  83         if (msg.get_message_type() == XEmbed.getAtom()) {
  84             if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Embedded message: " + msgidToString((int)msg.get_data(1)));


  85             switch ((int)msg.get_data(1)) {
  86               case XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start
  87                   // NOTE: May be called two times because we send _SUN_XEMBED_START
  88                   active = true;
  89                   server = getEmbedder(embedded, msg);
  90                   // Check if window is reparented. If not - it was created with
  91                   // parent and so we should update it here.
  92                   if (!embedded.isReparented()) {
  93                       embedded.setReparented(true);
  94                       embedded.updateSizeHints();
  95                   }
  96                   embedded.notifyStarted();
  97                   break;
  98               case XEMBED_WINDOW_ACTIVATE:
  99                   applicationActive = true;
 100                   break;
 101               case XEMBED_WINDOW_DEACTIVATE:
 102                   if (applicationActive) {
 103                       applicationActive = false;
 104                       handleWindowFocusOut();




  34 /**
  35  * Helper class implementing XEmbed protocol handling routines(client side)
  36  * Window which wants to participate in a protocol should create an instance,
  37  * call install and forward all XClientMessageEvents to it.
  38  */
  39 public class XEmbedClientHelper extends XEmbedHelper implements XEventDispatcher {
  40     private static final Logger xembedLog = Logger.getLogger("sun.awt.X11.xembed.XEmbedClientHelper");
  41 
  42     private XEmbeddedFramePeer embedded;
  43     private boolean active;
  44     private long server;
  45     private boolean applicationActive;
  46 
  47     XEmbedClientHelper() {
  48         super();
  49     }
  50 
  51     void install(XEmbeddedFramePeer embedded) {
  52         this.embedded = embedded;
  53 
  54         if (xembedLog.isLoggable(Level.FINE)) {
  55             xembedLog.fine("Installing xembedder on " + embedded);
  56         }
  57         XToolkit.addEventDispatcher(embedded.getWindow(), this);
  58         long[] info = new long[] { XEMBED_VERSION, XEMBED_MAPPED };
  59         long data = Native.card32ToData(info);
  60         try {
  61             XEmbedInfo.setAtomData(embedded.getWindow(), data, 2);
  62         } finally {
  63             unsafe.freeMemory(data);
  64         }
  65         // XEmbeddedFrame is initially created with a null parent..
  66         // Here it is reparented to the proper parent window.
  67         long parentWindow = embedded.getParentWindowHandle();
  68         if (parentWindow != 0) {
  69             XToolkit.awtLock();
  70             try {
  71                 XlibWrapper.XReparentWindow(XToolkit.getDisplay(),
  72                                             embedded.getWindow(),
  73                                             parentWindow,
  74                                             0, 0);
  75             } finally {
  76                 XToolkit.awtUnlock();
  77             }
  78         }
  79         notifyReady();
  80     }
  81 
  82     void handleClientMessage(XEvent xev) {
  83         XClientMessageEvent msg = xev.get_xclient();
  84         if (xembedLog.isLoggable(Level.FINE)) {
  85             xembedLog.fine(msg.toString());
  86         }
  87         if (msg.get_message_type() == XEmbed.getAtom()) {
  88             if (xembedLog.isLoggable(Level.FINE)) {
  89                 xembedLog.fine("Embedded message: " + msgidToString((int)msg.get_data(1)));
  90             }
  91             switch ((int)msg.get_data(1)) {
  92               case XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start
  93                   // NOTE: May be called two times because we send _SUN_XEMBED_START
  94                   active = true;
  95                   server = getEmbedder(embedded, msg);
  96                   // Check if window is reparented. If not - it was created with
  97                   // parent and so we should update it here.
  98                   if (!embedded.isReparented()) {
  99                       embedded.setReparented(true);
 100                       embedded.updateSizeHints();
 101                   }
 102                   embedded.notifyStarted();
 103                   break;
 104               case XEMBED_WINDOW_ACTIVATE:
 105                   applicationActive = true;
 106                   break;
 107               case XEMBED_WINDOW_DEACTIVATE:
 108                   if (applicationActive) {
 109                       applicationActive = false;
 110                       handleWindowFocusOut();


< prev index next >