Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Fix for PR 38268

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v
retrieving revision 1.149
diff -u -r1.149 ChangeLog
--- ChangeLog 29 May 2003 19:20:15 -0000 1.149
+++ ChangeLog 30 May 2003 17:44:06 -0000
@@ -1,4 +1,9 @@
 2003-05-29 Mikhail Khodjaiants
+ PR 38268: added the image cache for overlay images.
+ * OverlayImageCache.java: new
+ * CDTDebugModelPresentation.java
+
+2003-05-29 Mikhail Khodjaiants
  Changed the vizualization of arrays and structures.
  * CDTDebugModelPresentation.java
 
Index: src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java,v
retrieving revision 1.55
diff -u -r1.55 CDTDebugModelPresentation.java
--- src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java 29 May 2003 19:20:15 -0000 1.55
+++ src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java 30 May 2003 17:44:07 -0000
@@ -100,6 +100,8 @@
 
  private static CDTDebugModelPresentation fInstance = null;
 
+ private OverlayImageCache fImageCache = new OverlayImageCache();
+
  /**
   * Constructor for CDTDebugModelPresentation.
   */
@@ -218,8 +220,7 @@
       break;
     }
    }
-   OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( baseImage, overlays );
-   return overlayImage.createImage();
+   return fImageCache.getImageFor( new OverlayImageDescriptor( baseImage, overlays ) );
   }
   return null;
  }
@@ -627,8 +628,7 @@
    descriptor = DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED );
   }
   ;
-  OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( breakpoint ) );
-  return overlayImage.createImage();
+  return fImageCache.getImageFor( new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( breakpoint ) ) );
  }
 
  protected Image getWatchpointImage( ICWatchpoint watchpoint ) throws CoreException
@@ -652,8 +652,7 @@
    else
     descriptor = CDebugImages.DESC_OBJS_WATCHPOINT_DISABLED;
   }
-  OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( watchpoint ) );
-  return overlayImage.createImage();
+  return fImageCache.getImageFor( new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( watchpoint ) ) );
  }
 
  protected IBreakpoint getBreakpoint( IMarker marker )
@@ -930,5 +929,13 @@
   {
   }
   return type;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+  */
+ public void dispose()
+ {
+  fImageCache.disposeAll();
  }
 }
Index: src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java
diff -N src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java 30 May 2003 17:44:07 -0000
@@ -0,0 +1,53 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.ui;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Maintains a cache of overlay images.
+ *
+ * @since May 30, 2003
+ */
+public class OverlayImageCache
+{
+ private Map cache = new HashMap();
+
+ /**
+  * Returns and caches an image corresponding to the specified image descriptor.
+  *
+  * @param imageDecsriptor the image descriptor
+  * @return the image
+  */
+ public Image getImageFor( OverlayImageDescriptor imageDescriptor )
+ {
+  Image image = (Image)cache.get( imageDescriptor );
+  if ( image == null )
+  {
+   image = imageDescriptor.createImage();
+   cache.put( imageDescriptor, image );
+  }
+  return image;
+ }
+
+ /**
+  * Disposes of all images in the cache.
+  */
+ public void disposeAll()
+ {
+  for ( Iterator it = cache.values().iterator(); it.hasNext(); )
+  {
+   Image image = (Image)it.next();
+   image.dispose();
+  }
+  cache.clear();
+ }
+}

Back to the top