Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Unified Diff: ui/gl/gl_image_io_surface.cc

Issue 301793003: During image destroy, delete textures only if we have a GL context. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: build issues addressed. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gl/gl_image_io_surface.cc
diff --git a/ui/gl/gl_image_io_surface.cc b/ui/gl/gl_image_io_surface.cc
index cf858abbf6d3ee5ff02532e9789e37338614f950..3450e2d0bf585db865ccaca0419f71360ff98b6a 100644
--- a/ui/gl/gl_image_io_surface.cc
+++ b/ui/gl/gl_image_io_surface.cc
@@ -15,7 +15,9 @@ namespace gfx {
GLImageIOSurface::GLImageIOSurface(const gfx::Size& size) : size_(size) {
}
-GLImageIOSurface::~GLImageIOSurface() { Destroy(); }
+GLImageIOSurface::~GLImageIOSurface() {
+ DCHECK(!io_surface_);
+}
bool GLImageIOSurface::Initialize(const gfx::GpuMemoryBufferHandle& handle) {
io_surface_.reset(IOSurfaceLookup(handle.io_surface_id));
@@ -27,9 +29,18 @@ bool GLImageIOSurface::Initialize(const gfx::GpuMemoryBufferHandle& handle) {
return true;
}
+void GLImageIOSurface::Destroy(bool have_context) {
+ io_surface_.reset();
+}
+
gfx::Size GLImageIOSurface::GetSize() { return size_; }
bool GLImageIOSurface::BindTexImage(unsigned target) {
+ if (!io_surface_) {
+ LOG(ERROR) << "Uninitialized image cannot be bound to texture";
+ return false;
+ }
reveman 2014/07/25 19:00:23 Let's keep this as before. Sorry.
sohanjg 2014/07/26 10:42:23 Done.
+
if (target != GL_TEXTURE_RECTANGLE_ARB) {
// This might be supported in the future. For now, perform strict
// validation so we know what's going on.
@@ -40,7 +51,6 @@ bool GLImageIOSurface::BindTexImage(unsigned target) {
CGLContextObj cgl_context =
static_cast<CGLContextObj>(GLContext::GetCurrent()->GetHandle());
- DCHECK(io_surface_);
CGLError cgl_error = CGLTexImageIOSurface2D(cgl_context,
target,
GL_RGBA,

Powered by Google App Engine
This is Rietveld 408576698