#ifdef ENABLE_THREADS
# include <simgear/threads/SGThread.hxx>
# include <simgear/threads/SGQueue.hxx>
+#else
+# include <queue>
+ SG_USING_STD( queue );
#endif
+
// Forward reference.
class FGTileEntry;
*/
~FGTileLoader();
+#if 0 // we don't ever want to do this I don't think
+ /**
+ * Flush anything in pending load queue without doing the work
+ * Leave the free queue intact since that's are only record of
+ * things we need to remove.
+ */
+ void reinit();
+#endif
+
/**
* Add a tile to the end of the load queue.
* @param tile The tile to be loaded from disk.
- * @param vis Current visibilty (in feet?) (see FGTileMgr::vis).
*/
void add( FGTileEntry* tile );
+#ifdef WISH_PLIB_WAS_THREADED // but it isn't
+ /**
+ * Remove a tile from memory.
+ * @param tile The tile to be removed from memory.
+ */
+ void remove( FGTileEntry* tile );
+#endif
+
/**
* The tile loader thread will only load one tile per call to the
* update() method. This is a way to spread out the work of the
* Returns whether the load queue is empty (contains no elements).
* @return true if load queue is empty otherwise returns false.
*/
- // bool empty() const { return tile_queue.empty(); }
+ // bool empty() const { return tile_load_queue.empty(); }
private:
private:
+#ifdef ENABLE_THREADS
/**
* FIFO queue of tiles to load from data files.
*/
- SGBlockingQueue< FGTileEntry* > tile_queue;
-
+ SGBlockingQueue< FGTileEntry * > tile_load_queue;
+ // SGBlockingQueue< FGTileEntry * > tile_free_queue;
+#else
+ queue< FGTileEntry * > tile_load_queue;
+ // queue< FGTileEntry * > tile_free_queue;
+#endif
+
/**
* Base name of directory containing tile data file.
*/
- SGPath tile_path;
+ string tile_path;
#ifdef ENABLE_THREADS
/**
* Lock and synchronize access to tile queue.
*/
SGMutex mutex;
- SGCondition frame_cond;
+ SGPthreadCond frame_cond;
/**
* Thread cleanup handler.