* src/cache/ftcmanag.c (FTC_Manager_Reset): add missing cache flush

    * src/cache/ftcback.h, src/cache/rules.mk: removed obsolete ftcback.h
    which was revived by the merge operation (blooody cvs)

    * src/cache/ftcsbit.c: using FTC_RETRY_LOOP ... FTC_RETRY_END
diff --git a/ChangeLog b/ChangeLog
index 5f9c30e..94800cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,13 @@
 
     * MANY FILES... Mergin with main branch (HEAD)
 
+    * src/cache/ftcmanag.c (FTC_Manager_Reset): add missing cache flush
+
+    * src/cache/ftcback.h, src/cache/rules.mk: removed obsolete ftcback.h
+    which was revived by the merge operation (blooody cvs)
+
+    * src/cache/ftcsbit.c: using FTC_RETRY_LOOP ... FTC_RETRY_END
+
 2005-09-21  David Turner  <david@freetype.org>
 
     * massive redesign of the cache sub-system internals.
diff --git a/src/cache/ftccback.h b/src/cache/ftccback.h
deleted file mode 100644
index 6b47e09..0000000
--- a/src/cache/ftccback.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftccback.h                                                             */
-/*                                                                         */
-/*    Callback functions of the caching sub-system (specification only).   */
-/*                                                                         */
-/*  Copyright 2004 by                                                      */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-#ifndef __FTCCBACK_H__
-#define __FTCCBACK_H__
-
-#include <ft2build.h>
-#include FT_CACHE_H
-#include FT_CACHE_INTERNAL_MRU_H
-#include FT_CACHE_INTERNAL_IMAGE_H
-#include FT_CACHE_INTERNAL_MANAGER_H
-#include FT_CACHE_INTERNAL_GLYPH_H
-#include FT_CACHE_INTERNAL_SBITS_H
-
-
-  FT_LOCAL( void )
-  ftc_inode_free( FTC_Node   inode,
-                  FTC_Cache  cache );
-
-  FT_LOCAL( FT_Error )
-  ftc_inode_new( FTC_Node   *pinode,
-                 FT_Pointer  gquery,
-                 FTC_Cache   cache );
-
-  FT_LOCAL( FT_ULong )
-  ftc_inode_weight( FTC_Node   inode,
-                    FTC_Cache  cache );
-
-
-  FT_LOCAL( void )
-  ftc_snode_free( FTC_Node   snode,
-                  FTC_Cache  cache );
-
-  FT_LOCAL( FT_Error )
-  ftc_snode_new( FTC_Node   *psnode,
-                 FT_Pointer  gquery,
-                 FTC_Cache   cache );
-
-  FT_LOCAL( FT_ULong )
-  ftc_snode_weight( FTC_Node   snode,
-                    FTC_Cache  cache );
-
-  FT_LOCAL( FT_Bool )
-  ftc_snode_compare( FTC_Node    snode,
-                     FT_Pointer  gquery,
-                     FTC_Cache   cache );
-
-
-  FT_LOCAL( FT_Bool )
-  ftc_gnode_compare( FTC_Node    gnode,
-                     FT_Pointer  gquery,
-                     FTC_Cache   cache );
-
-
-  FT_LOCAL( FT_Error )
-  ftc_gcache_init( FTC_Cache  cache );
-
-  FT_LOCAL( void )
-  ftc_gcache_done( FTC_Cache  cache );
-
-
-  FT_LOCAL( FT_Error )
-  ftc_cache_init( FTC_Cache  cache );
-
-  FT_LOCAL( void )
-  ftc_cache_done( FTC_Cache  cache );
-
-
-#endif /* __FTCCBACK_H__ */
-
-/* END */
diff --git a/src/cache/ftcmanag.c b/src/cache/ftcmanag.c
index 186e69a..874d69d 100644
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -444,7 +444,7 @@
       FTC_MruList_Reset( &manager->sizes );
       FTC_MruList_Reset( &manager->faces );
     }
-    /* XXX: FIXME: flush the caches? */
+    FTC_Manager_FlushN( manager, manager->num_nodes );
   }
 
 
diff --git a/src/cache/ftcsbits.c b/src/cache/ftcsbits.c
index 54f0444..8f8a25a 100644
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -288,38 +288,6 @@
       FTC_SBit  sbit = snode->sbits + ( gindex - gnode->gindex );
 
 
-      /*
-       *  The following code illustrates what to do when you want to
-       *  perform operations that may fail within a lookup function.
-       *
-       *  Here, we want to load a small bitmap on-demand; we thus
-       *  need to call the `ftc_snode_load' function which may return
-       *  a non-zero error code only when we are out of memory (OOM).
-       *
-       *  The correct thing to do is to use @FTC_CACHE_TRYLOOP and
-       *  @FTC_CACHE_TRYLOOP_END in order to implement a retry loop
-       *  that is capable of flushing the cache incrementally when
-       *  an OOM errors occur.
-       *
-       *  However, we need to `lock' the node before this operation to
-       *  prevent it from being flushed within the loop.
-       *
-       *  When we exit the loop, we unlock the node, then check the `error'
-       *  variable.  If it is non-zero, this means that the cache was
-       *  completely flushed and that no usable memory was found to load
-       *  the bitmap.
-       *
-       *  We then prefer to return a value of 0 (i.e., NO MATCH).  This
-       *  ensures that the caller will try to allocate a new node.
-       *  This operation consequently _fail_ and the lookup function
-       *  returns the appropriate OOM error code.
-       *
-       *  Note that `buffer == NULL && width == 255' is a hack used to
-       *  tag `unavailable' bitmaps in the array.  We should never try
-       *  to load these.
-       *
-       */
-
       if ( sbit->buffer == NULL && sbit->width != 255 )
       {
         FT_ULong  size;
@@ -329,11 +297,11 @@
         FTC_NODE_REF(snode);  /* lock node to prevent flushing */
                               /* in retry loop                 */
 
-        FTC_CACHE_TRYLOOP( cache )
+        FTC_RETR_LOOP( cache->manager )
         {
           error = ftc_snode_load( snode, cache->manager, gindex, &size );
         }
-        FTC_CACHE_TRYLOOP_END();
+        FTC_RETRY_END( error );
 
         FTC_NODE(snode)->ref_count--;  /* unlock the node */
 
diff --git a/src/cache/rules.mk b/src/cache/rules.mk
index 9d22611..a51151a 100644
--- a/src/cache/rules.mk
+++ b/src/cache/rules.mk
@@ -42,8 +42,7 @@
                $(CACHE_H_DIR)/ftcimage.h \
                $(CACHE_H_DIR)/ftccmap.h  \
                $(CACHE_DIR)/ftcerror.h   \
-               $(CACHE_DIR)/ftcint.h     \
-               $(CACHE_DIR)/ftccback.h
+               $(CACHE_DIR)/ftcint.h
 
 
 # Cache driver object(s)