< prev index next >

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


  39 
  40 
  41 
  42 class XAWTXSettings extends XSettings implements XMSelectionListener {
  43 
  44     private final XAtom xSettingsPropertyAtom = XAtom.get("_XSETTINGS_SETTINGS");
  45 
  46     private static Logger log = Logger.getLogger("sun.awt.X11.XAWTXSettings");
  47 
  48     /* The maximal length of the property data. */
  49     public static final long MAX_LENGTH = 1000000;
  50 
  51     XMSelection settings;
  52 
  53     public XAWTXSettings() {
  54         initXSettings();
  55 
  56     }
  57 
  58     void initXSettings() {
  59         if (log.isLoggable(Level.FINE)) log.fine("Initializing XAWT XSettings");


  60         settings = new XMSelection("_XSETTINGS");
  61         settings.addSelectionListener(this);
  62         initPerScreenXSettings();
  63     }
  64 
  65     public void ownerDeath(int screen, XMSelection sel, long deadOwner) {
  66         if (log.isLoggable(Level.FINE)) log.fine("Owner " + deadOwner + " died for selection " + sel + " screen "+ screen);


  67     }
  68 
  69 
  70     public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) {
  71         if (log.isLoggable(Level.FINE)) log.fine("New Owner "+ newOwner + " for selection = " + sel + " screen " +screen );


  72     }
  73 
  74     public void selectionChanged(int screen, XMSelection sel, long owner , XPropertyEvent event) {

  75         log.fine("Selection changed on sel " + sel + " screen = " + screen + " owner = " + owner + " event = " + event);

  76         updateXSettings(screen,owner);
  77     }
  78 
  79     void initPerScreenXSettings() {
  80         if (log.isLoggable(Level.FINE)) log.fine("Updating Per XSettings changes");


  81 
  82         /*
  83          * As toolkit cannot yet cope with per-screen desktop properties,
  84          * only report XSETTINGS changes on the default screen.  This
  85          * should be "good enough" for most cases.
  86          */
  87 
  88         Map updatedSettings = null;
  89         XToolkit.awtLock();
  90         try {
  91             long display = XToolkit.getDisplay();
  92             int screen = (int) XlibWrapper.DefaultScreen(display);
  93             updatedSettings = getUpdatedSettings(settings.getOwner(screen));
  94         } finally {
  95             XToolkit.awtUnlock();
  96         }
  97         // we must not  invoke this under Awt Lock
  98         ((XToolkit)Toolkit.getDefaultToolkit()).parseXSettings(0,updatedSettings);
  99     }
 100 
 101     private void updateXSettings(int screen, long owner) {
 102         final Map updatedSettings = getUpdatedSettings(owner);
 103         // this method is called under awt lock and usually on toolkit thread
 104         // but parseXSettings() causes public code execution, so we need to transfer
 105         // this to EDT
 106         EventQueue.invokeLater( new Runnable() {
 107             public void run() {
 108                 ((XToolkit) Toolkit.getDefaultToolkit()).parseXSettings( 0, updatedSettings);
 109             }
 110         });
 111     }
 112 
 113     private Map getUpdatedSettings(final long owner) {
 114         if (log.isLoggable(Level.FINE)) log.fine("owner =" + owner);


 115         if (0 == owner) {
 116             return null;
 117         }
 118 
 119         Map settings = null;
 120         try {
 121             WindowPropertyGetter getter =
 122                 new WindowPropertyGetter(owner, xSettingsPropertyAtom, 0, MAX_LENGTH,
 123                         false, xSettingsPropertyAtom.getAtom() );
 124             try {
 125                 int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
 126 
 127                 if (status != XlibWrapper.Success || getter.getData() == 0) {
 128                     if (log.isLoggable(Level.FINE)) log.fine("OH OH : getter failed  status = " + status );


 129                     settings = null;
 130                 }
 131 
 132                 long ptr = getter.getData();
 133 
 134                 if (log.isLoggable(Level.FINE)) log.fine("noItems = " + getter.getNumberOfItems());


 135                 byte array[] = Native.toBytes(ptr,getter.getNumberOfItems());
 136                 if (array != null) {
 137                     settings = update(array);
 138                 }
 139             } finally {
 140                 getter.dispose();
 141             }
 142         }
 143         catch (Exception e) {
 144             e.printStackTrace();
 145         }
 146         return settings;
 147     }
 148 
 149 
 150 
 151 }


  39 
  40 
  41 
  42 class XAWTXSettings extends XSettings implements XMSelectionListener {
  43 
  44     private final XAtom xSettingsPropertyAtom = XAtom.get("_XSETTINGS_SETTINGS");
  45 
  46     private static Logger log = Logger.getLogger("sun.awt.X11.XAWTXSettings");
  47 
  48     /* The maximal length of the property data. */
  49     public static final long MAX_LENGTH = 1000000;
  50 
  51     XMSelection settings;
  52 
  53     public XAWTXSettings() {
  54         initXSettings();
  55 
  56     }
  57 
  58     void initXSettings() {
  59         if (log.isLoggable(Level.FINE)) {
  60             log.fine("Initializing XAWT XSettings");
  61         }
  62         settings = new XMSelection("_XSETTINGS");
  63         settings.addSelectionListener(this);
  64         initPerScreenXSettings();
  65     }
  66 
  67     public void ownerDeath(int screen, XMSelection sel, long deadOwner) {
  68         if (log.isLoggable(Level.FINE)) {
  69             log.fine("Owner " + deadOwner + " died for selection " + sel + " screen "+ screen);
  70         }
  71     }
  72 
  73 
  74     public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) {
  75         if (log.isLoggable(Level.FINE)) {
  76             log.fine("New Owner "+ newOwner + " for selection = " + sel + " screen " +screen );
  77         }
  78     }
  79 
  80     public void selectionChanged(int screen, XMSelection sel, long owner , XPropertyEvent event) {
  81         if (log.isLoggable(Level.FINE)) {
  82             log.fine("Selection changed on sel " + sel + " screen = " + screen + " owner = " + owner + " event = " + event);
  83         }
  84         updateXSettings(screen,owner);
  85     }
  86 
  87     void initPerScreenXSettings() {
  88         if (log.isLoggable(Level.FINE)) {
  89             log.fine("Updating Per XSettings changes");
  90         }
  91 
  92         /*
  93          * As toolkit cannot yet cope with per-screen desktop properties,
  94          * only report XSETTINGS changes on the default screen.  This
  95          * should be "good enough" for most cases.
  96          */
  97 
  98         Map updatedSettings = null;
  99         XToolkit.awtLock();
 100         try {
 101             long display = XToolkit.getDisplay();
 102             int screen = (int) XlibWrapper.DefaultScreen(display);
 103             updatedSettings = getUpdatedSettings(settings.getOwner(screen));
 104         } finally {
 105             XToolkit.awtUnlock();
 106         }
 107         // we must not  invoke this under Awt Lock
 108         ((XToolkit)Toolkit.getDefaultToolkit()).parseXSettings(0,updatedSettings);
 109     }
 110 
 111     private void updateXSettings(int screen, long owner) {
 112         final Map updatedSettings = getUpdatedSettings(owner);
 113         // this method is called under awt lock and usually on toolkit thread
 114         // but parseXSettings() causes public code execution, so we need to transfer
 115         // this to EDT
 116         EventQueue.invokeLater( new Runnable() {
 117             public void run() {
 118                 ((XToolkit) Toolkit.getDefaultToolkit()).parseXSettings( 0, updatedSettings);
 119             }
 120         });
 121     }
 122 
 123     private Map getUpdatedSettings(final long owner) {
 124         if (log.isLoggable(Level.FINE)) {
 125             log.fine("owner =" + owner);
 126         }
 127         if (0 == owner) {
 128             return null;
 129         }
 130 
 131         Map settings = null;
 132         try {
 133             WindowPropertyGetter getter =
 134                 new WindowPropertyGetter(owner, xSettingsPropertyAtom, 0, MAX_LENGTH,
 135                         false, xSettingsPropertyAtom.getAtom() );
 136             try {
 137                 int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
 138 
 139                 if (status != XlibWrapper.Success || getter.getData() == 0) {
 140                     if (log.isLoggable(Level.FINE)) {
 141                         log.fine("OH OH : getter failed  status = " + status );
 142                     }
 143                     settings = null;
 144                 }
 145 
 146                 long ptr = getter.getData();
 147 
 148                 if (log.isLoggable(Level.FINE)) {
 149                     log.fine("noItems = " + getter.getNumberOfItems());
 150                 }
 151                 byte array[] = Native.toBytes(ptr,getter.getNumberOfItems());
 152                 if (array != null) {
 153                     settings = update(array);
 154                 }
 155             } finally {
 156                 getter.dispose();
 157             }
 158         }
 159         catch (Exception e) {
 160             e.printStackTrace();
 161         }
 162         return settings;
 163     }
 164 
 165 
 166 
 167 }
< prev index next >