History

Merging with master

samcake committed 10 years ago

Commit 3ca1cdd2 parents beb4233 f71a59233 files · +669 −231Browse files

Showing the changes to libraries/render-utils/src/FramebufferCache.cpp (1 of 33 files). Show all

Unified · Split

libraries/render-utils/src/FramebufferCache.cpp+9−16
@@ -11,30 +11,21 @@ · 10 unmodified lines
1111
1212 #include "FramebufferCache.h"
1313
14−#include <mutex>
15−
1614 #include <glm/glm.hpp>
15+#include <gpu/Format.h>
16+#include <gpu/Framebuffer.h>
1717
18−#include <QMap>
19−#include <QQueue>
20−#include <gpu/Batch.h>
2118 #include "RenderUtilsLogging.h"
2219
23−static QQueue<gpu::FramebufferPointer> _cachedFramebuffers;
24−
25−FramebufferCache::FramebufferCache() {
26−}
27−
28−FramebufferCache::~FramebufferCache() {
29− _cachedFramebuffers.clear();
30−}
31−
3220 void FramebufferCache::setFrameBufferSize(QSize frameBufferSize) {
3321 //If the size changed, we need to delete our FBOs
3422 if (_frameBufferSize != frameBufferSize) {
3523 _frameBufferSize = frameBufferSize;
3624 _selfieFramebuffer.reset();
37− _cachedFramebuffers.clear();
25+ {
26+ std::unique_lock<std::mutex> lock(_mutex);
27+ _cachedFramebuffers.clear();
28+ }
3829 }
3930 }
4031
@@ -54,7 +45,8 @@ void FramebufferCache::createPrimaryFramebuffer() { · 13 unmodified lines
5445
5546
5647 gpu::FramebufferPointer FramebufferCache::getFramebuffer() {
57− if (_cachedFramebuffers.isEmpty()) {
48+ std::unique_lock<std::mutex> lock(_mutex);
49+ if (_cachedFramebuffers.empty()) {
5850 _cachedFramebuffers.push_back(gpu::FramebufferPointer(gpu::Framebuffer::create(gpu::Element::COLOR_SRGBA_32, _frameBufferSize.width(), _frameBufferSize.height())));
5951 }
6052 gpu::FramebufferPointer result = _cachedFramebuffers.front();
@@ -63,6 +55,7 @@ gpu::FramebufferPointer FramebufferCache::getFramebuffer() { · 2 unmodified lines
6355 }
6456
6557 void FramebufferCache::releaseFramebuffer(const gpu::FramebufferPointer& framebuffer) {
58+ std::unique_lock<std::mutex> lock(_mutex);
6659 if (QSize(framebuffer->getSize().x, framebuffer->getSize().y) == _frameBufferSize) {
6760 _cachedFramebuffers.push_back(framebuffer);
6861 }