#ifndef MEMORYCACHE_H #define MEMORYCACHE_H #include #include #include "framebufferobject.h" class MemoryCache { public: class Reference { public: Reference(MemoryCache* cache); ~Reference(); FramebufferObject* buffer(); void Relinquish(); private: void Request(); MemoryCache* cache_; int buffer_; }; MemoryCache(); ~MemoryCache(); void SetParameters(QOpenGLContext* ctx, int width, int height); private: int RequestBuffer(Reference *r); int RequestBufferInternal(Reference *r); void RelinquishBuffer(int index); FramebufferObject *Buffer(int index); bool OutOfMemory(); void Clear(); QList buffers_; QList refs_; QList access_times_; QOpenGLContext* ctx_; QList relinquished_buffers_; int width_; int height_; QMutex buffer_array_mutex_; }; #endif // MEMORYCACHE_H