summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/renderbuffer_manager.h
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-19 05:20:56 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-19 05:20:56 +0000
commit3b67546f8f00187780a5e9c4200978d09dff1e16 (patch)
tree06a2d68962d16d180462ae30ca38870f70fe3ce1 /gpu/command_buffer/service/renderbuffer_manager.h
parent3757a37d59a5e0a6b9baccce42b0ee2bc1c060ef (diff)
downloadchromium_src-3b67546f8f00187780a5e9c4200978d09dff1e16.zip
chromium_src-3b67546f8f00187780a5e9c4200978d09dff1e16.tar.gz
chromium_src-3b67546f8f00187780a5e9c4200978d09dff1e16.tar.bz2
Fix RenderbufferManager to handle deleted objects
TEST=unit tests BUG=110198 R=apatrick@chromium.org Review URL: http://codereview.chromium.org/9253027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118243 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/renderbuffer_manager.h')
-rw-r--r--gpu/command_buffer/service/renderbuffer_manager.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/gpu/command_buffer/service/renderbuffer_manager.h b/gpu/command_buffer/service/renderbuffer_manager.h
index cae19f3..8cfd993 100644
--- a/gpu/command_buffer/service/renderbuffer_manager.h
+++ b/gpu/command_buffer/service/renderbuffer_manager.h
@@ -23,8 +23,9 @@ class RenderbufferManager {
public:
typedef scoped_refptr<RenderbufferInfo> Ref;
- explicit RenderbufferInfo(GLuint service_id)
- : service_id_(service_id),
+ RenderbufferInfo(RenderbufferManager* manager, GLuint service_id)
+ : manager_(manager),
+ service_id_(service_id),
cleared_(true),
has_been_bound_(false),
samples_(0),
@@ -75,7 +76,7 @@ class RenderbufferManager {
friend class RenderbufferManager;
friend class base::RefCounted<RenderbufferInfo>;
- ~RenderbufferInfo() { }
+ ~RenderbufferInfo();
void set_cleared() {
cleared_ = true;
@@ -94,6 +95,9 @@ class RenderbufferManager {
service_id_ = 0;
}
+ // RenderbufferManager that owns this RenderbufferInfo.
+ RenderbufferManager* manager_;
+
// Service side renderbuffer id.
GLuint service_id_;
@@ -153,6 +157,8 @@ class RenderbufferManager {
private:
void UpdateMemRepresented();
+ void StopTracking(RenderbufferInfo* renderbuffer);
+
GLint max_renderbuffer_size_;
GLint max_samples_;