| Index: content/common/gpu/image_transport_surface_linux.cc
|
| diff --git a/content/common/gpu/image_transport_surface_linux.cc b/content/common/gpu/image_transport_surface_linux.cc
|
| index 405de3788be88ed2fd3149792036aa9b23e025c0..289202cfc123f2992fb96c1702d1bb83f015ba37 100644
|
| --- a/content/common/gpu/image_transport_surface_linux.cc
|
| +++ b/content/common/gpu/image_transport_surface_linux.cc
|
| @@ -75,7 +75,7 @@ class EGLImageTransportSurface
|
| virtual gfx::Size GetSize() OVERRIDE;
|
| virtual bool OnMakeCurrent(gfx::GLContext* context) OVERRIDE;
|
| virtual unsigned int GetBackingFrameBufferObject() OVERRIDE;
|
| - virtual void SetVisible(bool visible) OVERRIDE;
|
| + virtual void SetResourceUsage(ResourceUsage resourceUsage) OVERRIDE;
|
|
|
| protected:
|
| // ImageTransportSurface implementation
|
| @@ -124,7 +124,7 @@ class GLXImageTransportSurface
|
| virtual std::string GetExtensions();
|
| virtual gfx::Size GetSize() OVERRIDE;
|
| virtual bool OnMakeCurrent(gfx::GLContext* context) OVERRIDE;
|
| - virtual void SetVisible(bool visible) OVERRIDE;
|
| + virtual void SetResourceUsage(ResourceUsage resourceUsage) OVERRIDE;
|
|
|
| protected:
|
| // ImageTransportSurface implementation:
|
| @@ -312,12 +312,21 @@ unsigned int EGLImageTransportSurface::GetBackingFrameBufferObject() {
|
| return fbo_id_;
|
| }
|
|
|
| -void EGLImageTransportSurface::SetVisible(bool visible) {
|
| - if (!visible && back_surface_.get() && front_surface_.get()) {
|
| - ReleaseSurface(&back_surface_);
|
| - } else if (visible && !back_surface_.get() && front_surface_.get()) {
|
| - // Leverage the OnResize hook because it does exactly what we want
|
| - OnResize(front_surface_->size());
|
| +void EGLImageTransportSurface::SetResourceUsage(ResourceUsage resourceUsage) {
|
| + switch (resourceUsage) {
|
| + case RESOURCE_USAGE_FULL:
|
| + if (!back_surface_.get() && front_surface_.get()) {
|
| + // Leverage the OnResize hook because it does exactly what we want
|
| + OnResize(front_surface_->size());
|
| + }
|
| + break;
|
| + case RESOURCE_USAGE_LESS:
|
| + if (back_surface_.get() && front_surface_.get())
|
| + ReleaseSurface(&back_surface_);
|
| + break;
|
| + case RESOURCE_USAGE_NONE:
|
| + // TODO(mmocny): drop all the buffers
|
| + break;
|
| }
|
| }
|
|
|
| @@ -509,13 +518,19 @@ void GLXImageTransportSurface::ReleaseSurface() {
|
| bound_ = false;
|
| }
|
|
|
| -void GLXImageTransportSurface::SetVisible(bool visible) {
|
| +void GLXImageTransportSurface::SetResourceUsage(ResourceUsage resourceUsage) {
|
| Display* dpy = static_cast<Display*>(GetDisplay());
|
| - if (!visible) {
|
| - XResizeWindow(dpy, window_, 1, 1);
|
| - } else {
|
| - XResizeWindow(dpy, window_, size_.width(), size_.height());
|
| - needs_resize_ = true;
|
| + switch (resourceUsage) {
|
| + case RESOURCE_USAGE_FULL:
|
| + XResizeWindow(dpy, window_, size_.width(), size_.height());
|
| + needs_resize_ = true;
|
| + break;
|
| + case RESOURCE_USAGE_LESS:
|
| + XResizeWindow(dpy, window_, 1, 1);
|
| + break;
|
| + case RESOURCE_USAGE_NONE:
|
| + // TODO(mmocny): drop all the buffers
|
| + break;
|
| }
|
| glXWaitX();
|
| }
|
|
|