< prev index next >

src/solaris/classes/sun/awt/X11/XMSelection.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>


 112     }
 113 
 114 
 115     public int getNumberOfScreens() {
 116         return numScreens;
 117     }
 118 
 119     void select(long extra_mask) {
 120         eventMask = extra_mask;
 121         for (int screen = 0; screen < numScreens ; screen ++) {
 122             selectPerScreen(screen,extra_mask);
 123         }
 124     }
 125 
 126     void resetOwner(long owner, final int screen) {
 127         XToolkit.awtLock();
 128         try {
 129             long display = XToolkit.getDisplay();
 130             synchronized(this) {
 131                 setOwner(owner, screen);
 132                 if (log.isLoggable(Level.FINE)) log.fine("New Selection Owner for screen " + screen + " = " + owner );


 133                 XlibWrapper.XSelectInput(display, owner, XlibWrapper.StructureNotifyMask | eventMask);
 134                 XToolkit.addEventDispatcher(owner,
 135                         new XEventDispatcher() {
 136                             public void dispatchEvent(XEvent ev) {
 137                                 dispatchSelectionEvent(ev, screen);
 138                             }
 139                         });
 140 
 141             }
 142         } finally {
 143             XToolkit.awtUnlock();
 144         }
 145     }
 146 
 147     void selectPerScreen(final int screen, long extra_mask) {
 148         XToolkit.awtLock();
 149         try {
 150             try {
 151                 long display = XToolkit.getDisplay();
 152                 if (log.isLoggable(Level.FINE)) log.fine("Grabbing XServer");


 153                 XlibWrapper.XGrabServer(display);
 154 
 155                 synchronized(this) {
 156                     String selection_name = getName()+"_S"+screen;
 157                     if (log.isLoggable(Level.FINE)) log.fine("Screen = " + screen + " selection name = " + selection_name);


 158                     XAtom atom = XAtom.get(selection_name);
 159                     selectionMap.put(Long.valueOf(atom.getAtom()),this); // add mapping from atom to the instance of XMSelection
 160                     setAtom(atom,screen);
 161                     long owner = XlibWrapper.XGetSelectionOwner(display, atom.getAtom());
 162                     if (owner != 0) {
 163                         setOwner(owner, screen);
 164                         if (log.isLoggable(Level.FINE)) log.fine("Selection Owner for screen " + screen + " = " + owner );


 165                         XlibWrapper.XSelectInput(display, owner, XlibWrapper.StructureNotifyMask | extra_mask);
 166                         XToolkit.addEventDispatcher(owner,
 167                                 new XEventDispatcher() {
 168                                         public void dispatchEvent(XEvent ev) {
 169                                             dispatchSelectionEvent(ev, screen);
 170                                         }
 171                                     });
 172                     }
 173                 }
 174             }
 175             catch (Exception e) {
 176                 e.printStackTrace();
 177             }
 178             finally {
 179                 if (log.isLoggable(Level.FINE)) log.fine("UnGrabbing XServer");


 180                 XlibWrapper.XUngrabServer(XToolkit.getDisplay());
 181             }
 182         } finally {
 183             XToolkit.awtUnlock();
 184         }
 185     }
 186 
 187 
 188     static boolean processClientMessage(XEvent xev, int screen) {
 189         XClientMessageEvent xce = xev.get_xclient();
 190         if (xce.get_message_type() == XA_MANAGER.getAtom()) {
 191             if (log.isLoggable(Level.FINE)) log.fine("client messags = " + xce);


 192             long timestamp = xce.get_data(0);
 193             long atom = xce.get_data(1);
 194             long owner = xce.get_data(2);
 195             long data = xce.get_data(3);
 196 
 197             XMSelection sel = getInstance(atom);
 198             if (sel != null) {
 199                 sel.resetOwner(owner,screen);
 200                 sel.dispatchOwnerChangedEvent(xev,screen,owner,data, timestamp);
 201             }
 202         }
 203         return false;
 204     }
 205 
 206     static  boolean processRootEvent(XEvent xev, int screen) {
 207         switch (xev.get_type()) {
 208             case XlibWrapper.ClientMessage: {
 209                 return processClientMessage(xev, screen);
 210             }
 211         }


 278 
 279     synchronized long getOwner(int screen) {
 280         if (owners != null) {
 281             return owners[screen];
 282         }
 283         return 0;
 284     }
 285 
 286     synchronized void setOwner(long owner, int screen) {
 287         if (owners != null) {
 288             owners[screen] = owner;
 289         }
 290     }
 291 
 292     synchronized String getName() {
 293         return selectionName;
 294     }
 295 
 296 
 297     synchronized void dispatchSelectionChanged( XPropertyEvent ev, int screen) {
 298         if (log.isLoggable(Level.FINE)) log.fine("Selection Changed : Screen = " + screen + "Event =" + ev);


 299         if (listeners != null) {
 300             Iterator iter = listeners.iterator();
 301             while (iter.hasNext()) {
 302                 XMSelectionListener disp = (XMSelectionListener) iter.next();
 303                 disp.selectionChanged(screen, this, ev.get_window(), ev);
 304             }
 305         }
 306     }
 307 
 308     synchronized void dispatchOwnerDeath(XDestroyWindowEvent de, int screen) {
 309         if (log.isLoggable(Level.FINE)) log.fine("Owner dead : Screen = " + screen + "Event =" + de);


 310         if (listeners != null) {
 311             Iterator iter = listeners.iterator();
 312             while (iter.hasNext()) {
 313                 XMSelectionListener disp = (XMSelectionListener) iter.next();
 314                 disp.ownerDeath(screen, this, de.get_window());
 315 
 316             }
 317         }
 318     }
 319 
 320     void dispatchSelectionEvent(XEvent xev, int screen) {
 321         if (log.isLoggable(Level.FINE)) log.fine("Event =" + xev);


 322         if (xev.get_type() == XlibWrapper.DestroyNotify) {
 323             XDestroyWindowEvent de = xev.get_xdestroywindow();
 324             dispatchOwnerDeath( de, screen);
 325         }
 326         else if (xev.get_type() == XlibWrapper.PropertyNotify)  {
 327             XPropertyEvent xpe = xev.get_xproperty();
 328             dispatchSelectionChanged( xpe, screen);
 329         }
 330     }
 331 
 332 
 333     synchronized void dispatchOwnerChangedEvent(XEvent ev, int screen, long owner, long data, long timestamp) {
 334         if (listeners != null) {
 335             Iterator iter = listeners.iterator();
 336             while (iter.hasNext()) {
 337                 XMSelectionListener disp = (XMSelectionListener) iter.next();
 338                 disp.ownerChanged(screen,this, owner, data, timestamp);
 339             }
 340         }
 341     }


 112     }
 113 
 114 
 115     public int getNumberOfScreens() {
 116         return numScreens;
 117     }
 118 
 119     void select(long extra_mask) {
 120         eventMask = extra_mask;
 121         for (int screen = 0; screen < numScreens ; screen ++) {
 122             selectPerScreen(screen,extra_mask);
 123         }
 124     }
 125 
 126     void resetOwner(long owner, final int screen) {
 127         XToolkit.awtLock();
 128         try {
 129             long display = XToolkit.getDisplay();
 130             synchronized(this) {
 131                 setOwner(owner, screen);
 132                 if (log.isLoggable(Level.FINE)) {
 133                     log.fine("New Selection Owner for screen " + screen + " = " + owner );
 134                 }
 135                 XlibWrapper.XSelectInput(display, owner, XlibWrapper.StructureNotifyMask | eventMask);
 136                 XToolkit.addEventDispatcher(owner,
 137                         new XEventDispatcher() {
 138                             public void dispatchEvent(XEvent ev) {
 139                                 dispatchSelectionEvent(ev, screen);
 140                             }
 141                         });
 142 
 143             }
 144         } finally {
 145             XToolkit.awtUnlock();
 146         }
 147     }
 148 
 149     void selectPerScreen(final int screen, long extra_mask) {
 150         XToolkit.awtLock();
 151         try {
 152             try {
 153                 long display = XToolkit.getDisplay();
 154                 if (log.isLoggable(Level.FINE)) {
 155                     log.fine("Grabbing XServer");
 156                 }
 157                 XlibWrapper.XGrabServer(display);
 158 
 159                 synchronized(this) {
 160                     String selection_name = getName()+"_S"+screen;
 161                     if (log.isLoggable(Level.FINE)) {
 162                         log.fine("Screen = " + screen + " selection name = " + selection_name);
 163                     }
 164                     XAtom atom = XAtom.get(selection_name);
 165                     selectionMap.put(Long.valueOf(atom.getAtom()),this); // add mapping from atom to the instance of XMSelection
 166                     setAtom(atom,screen);
 167                     long owner = XlibWrapper.XGetSelectionOwner(display, atom.getAtom());
 168                     if (owner != 0) {
 169                         setOwner(owner, screen);
 170                         if (log.isLoggable(Level.FINE)) {
 171                             log.fine("Selection Owner for screen " + screen + " = " + owner );
 172                         }
 173                         XlibWrapper.XSelectInput(display, owner, XlibWrapper.StructureNotifyMask | extra_mask);
 174                         XToolkit.addEventDispatcher(owner,
 175                                 new XEventDispatcher() {
 176                                         public void dispatchEvent(XEvent ev) {
 177                                             dispatchSelectionEvent(ev, screen);
 178                                         }
 179                                     });
 180                     }
 181                 }
 182             }
 183             catch (Exception e) {
 184                 e.printStackTrace();
 185             }
 186             finally {
 187                 if (log.isLoggable(Level.FINE)) {
 188                     log.fine("UnGrabbing XServer");
 189                 }
 190                 XlibWrapper.XUngrabServer(XToolkit.getDisplay());
 191             }
 192         } finally {
 193             XToolkit.awtUnlock();
 194         }
 195     }
 196 
 197 
 198     static boolean processClientMessage(XEvent xev, int screen) {
 199         XClientMessageEvent xce = xev.get_xclient();
 200         if (xce.get_message_type() == XA_MANAGER.getAtom()) {
 201             if (log.isLoggable(Level.FINE)) {
 202                 log.fine("client messags = " + xce);
 203             }
 204             long timestamp = xce.get_data(0);
 205             long atom = xce.get_data(1);
 206             long owner = xce.get_data(2);
 207             long data = xce.get_data(3);
 208 
 209             XMSelection sel = getInstance(atom);
 210             if (sel != null) {
 211                 sel.resetOwner(owner,screen);
 212                 sel.dispatchOwnerChangedEvent(xev,screen,owner,data, timestamp);
 213             }
 214         }
 215         return false;
 216     }
 217 
 218     static  boolean processRootEvent(XEvent xev, int screen) {
 219         switch (xev.get_type()) {
 220             case XlibWrapper.ClientMessage: {
 221                 return processClientMessage(xev, screen);
 222             }
 223         }


 290 
 291     synchronized long getOwner(int screen) {
 292         if (owners != null) {
 293             return owners[screen];
 294         }
 295         return 0;
 296     }
 297 
 298     synchronized void setOwner(long owner, int screen) {
 299         if (owners != null) {
 300             owners[screen] = owner;
 301         }
 302     }
 303 
 304     synchronized String getName() {
 305         return selectionName;
 306     }
 307 
 308 
 309     synchronized void dispatchSelectionChanged( XPropertyEvent ev, int screen) {
 310         if (log.isLoggable(Level.FINE)) {
 311             log.fine("Selection Changed : Screen = " + screen + "Event =" + ev);
 312         }
 313         if (listeners != null) {
 314             Iterator iter = listeners.iterator();
 315             while (iter.hasNext()) {
 316                 XMSelectionListener disp = (XMSelectionListener) iter.next();
 317                 disp.selectionChanged(screen, this, ev.get_window(), ev);
 318             }
 319         }
 320     }
 321 
 322     synchronized void dispatchOwnerDeath(XDestroyWindowEvent de, int screen) {
 323         if (log.isLoggable(Level.FINE)) {
 324             log.fine("Owner dead : Screen = " + screen + "Event =" + de);
 325         }
 326         if (listeners != null) {
 327             Iterator iter = listeners.iterator();
 328             while (iter.hasNext()) {
 329                 XMSelectionListener disp = (XMSelectionListener) iter.next();
 330                 disp.ownerDeath(screen, this, de.get_window());
 331 
 332             }
 333         }
 334     }
 335 
 336     void dispatchSelectionEvent(XEvent xev, int screen) {
 337         if (log.isLoggable(Level.FINE)) {
 338             log.fine("Event =" + xev);
 339         }
 340         if (xev.get_type() == XlibWrapper.DestroyNotify) {
 341             XDestroyWindowEvent de = xev.get_xdestroywindow();
 342             dispatchOwnerDeath( de, screen);
 343         }
 344         else if (xev.get_type() == XlibWrapper.PropertyNotify)  {
 345             XPropertyEvent xpe = xev.get_xproperty();
 346             dispatchSelectionChanged( xpe, screen);
 347         }
 348     }
 349 
 350 
 351     synchronized void dispatchOwnerChangedEvent(XEvent ev, int screen, long owner, long data, long timestamp) {
 352         if (listeners != null) {
 353             Iterator iter = listeners.iterator();
 354             while (iter.hasNext()) {
 355                 XMSelectionListener disp = (XMSelectionListener) iter.next();
 356                 disp.ownerChanged(screen,this, owner, data, timestamp);
 357             }
 358         }
 359     }
< prev index next >