src/share/classes/sun/font/StrikeCache.java

Print this page




 334                     notifyDisposeListeners(gids);
 335                 }
 336             }
 337         }
 338 
 339         freeIntMemory(glyphPtrs, pContext);
 340     }
 341 
 342     private static void  freeCachedLongMemory(long[] glyphPtrs, long pContext) {
 343         synchronized(disposeListeners) {
 344         if (disposeListeners.size() > 0)  {
 345                 ArrayList<Long> gids = null;
 346 
 347                 for (int i=0; i < glyphPtrs.length; i++) {
 348                     if (glyphPtrs[i] != 0
 349                             && unsafe.getByte(glyphPtrs[i] + managedOffset) == 0) {
 350 
 351                         if (gids == null) {
 352                             gids = new ArrayList<Long>();
 353                         }
 354                         gids.add((long) glyphPtrs[i]);
 355                     }
 356                 }
 357 
 358                 if (gids != null) {
 359                     // Any reference by the disposers to the native glyph ptrs
 360                     // must be done before this returns.
 361                     notifyDisposeListeners(gids);
 362                 }
 363         }
 364         }
 365 
 366         freeLongMemory(glyphPtrs, pContext);
 367     }
 368 
 369     public static void addGlyphDisposedListener(GlyphDisposedListener listener) {
 370         synchronized(disposeListeners) {
 371             disposeListeners.add(listener);
 372         }
 373     }
 374 




 334                     notifyDisposeListeners(gids);
 335                 }
 336             }
 337         }
 338 
 339         freeIntMemory(glyphPtrs, pContext);
 340     }
 341 
 342     private static void  freeCachedLongMemory(long[] glyphPtrs, long pContext) {
 343         synchronized(disposeListeners) {
 344         if (disposeListeners.size() > 0)  {
 345                 ArrayList<Long> gids = null;
 346 
 347                 for (int i=0; i < glyphPtrs.length; i++) {
 348                     if (glyphPtrs[i] != 0
 349                             && unsafe.getByte(glyphPtrs[i] + managedOffset) == 0) {
 350 
 351                         if (gids == null) {
 352                             gids = new ArrayList<Long>();
 353                         }
 354                         gids.add(glyphPtrs[i]);
 355                     }
 356                 }
 357 
 358                 if (gids != null) {
 359                     // Any reference by the disposers to the native glyph ptrs
 360                     // must be done before this returns.
 361                     notifyDisposeListeners(gids);
 362                 }
 363         }
 364         }
 365 
 366         freeLongMemory(glyphPtrs, pContext);
 367     }
 368 
 369     public static void addGlyphDisposedListener(GlyphDisposedListener listener) {
 370         synchronized(disposeListeners) {
 371             disposeListeners.add(listener);
 372         }
 373     }
 374