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
11 11
12#include "FramebufferCache.h"12#include "FramebufferCache.h"
13 13
14#include <mutex>
15
16#include <glm/glm.hpp>14#include <glm/glm.hpp>
15#include <gpu/Format.h>
16#include <gpu/Framebuffer.h>
17 17
18#include <QMap>
19#include <QQueue>
20#include <gpu/Batch.h>
21#include "RenderUtilsLogging.h"18#include "RenderUtilsLogging.h"
22 19
23static QQueue<gpu::FramebufferPointer> _cachedFramebuffers;
24
25FramebufferCache::FramebufferCache() {
26}
27
28FramebufferCache::~FramebufferCache() {
29 _cachedFramebuffers.clear();
30}
31
32void FramebufferCache::setFrameBufferSize(QSize frameBufferSize) {20void FramebufferCache::setFrameBufferSize(QSize frameBufferSize) {
33 //If the size changed, we need to delete our FBOs21 //If the size changed, we need to delete our FBOs
34 if (_frameBufferSize != frameBufferSize) {22 if (_frameBufferSize != frameBufferSize) {
35 _frameBufferSize = frameBufferSize;23 _frameBufferSize = frameBufferSize;
36 _selfieFramebuffer.reset();24 _selfieFramebuffer.reset();
37 _cachedFramebuffers.clear();25 {
26 std::unique_lock<std::mutex> lock(_mutex);
27 _cachedFramebuffers.clear();
28 }
38 }29 }
39}30}
40 31
@@ -54,7 +45,8 @@ void FramebufferCache::createPrimaryFramebuffer() { · 13 unmodified lines
54 45
55 46
56gpu::FramebufferPointer FramebufferCache::getFramebuffer() {47gpu::FramebufferPointer FramebufferCache::getFramebuffer() {
57 if (_cachedFramebuffers.isEmpty()) {48 std::unique_lock<std::mutex> lock(_mutex);
49 if (_cachedFramebuffers.empty()) {
58 _cachedFramebuffers.push_back(gpu::FramebufferPointer(gpu::Framebuffer::create(gpu::Element::COLOR_SRGBA_32, _frameBufferSize.width(), _frameBufferSize.height())));50 _cachedFramebuffers.push_back(gpu::FramebufferPointer(gpu::Framebuffer::create(gpu::Element::COLOR_SRGBA_32, _frameBufferSize.width(), _frameBufferSize.height())));
59 }51 }
60 gpu::FramebufferPointer result = _cachedFramebuffers.front();52 gpu::FramebufferPointer result = _cachedFramebuffers.front();
@@ -63,6 +55,7 @@ gpu::FramebufferPointer FramebufferCache::getFramebuffer() { · 2 unmodified lines
63}55}
64 56
65void FramebufferCache::releaseFramebuffer(const gpu::FramebufferPointer& framebuffer) {57void FramebufferCache::releaseFramebuffer(const gpu::FramebufferPointer& framebuffer) {
58 std::unique_lock<std::mutex> lock(_mutex);
66 if (QSize(framebuffer->getSize().x, framebuffer->getSize().y) == _frameBufferSize) {59 if (QSize(framebuffer->getSize().x, framebuffer->getSize().y) == _frameBufferSize) {
67 _cachedFramebuffers.push_back(framebuffer);60 _cachedFramebuffers.push_back(framebuffer);
68 }61 }