| 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 28d560bc53b24b883311980bb3d47b2cddd0f88a..fca12556f159e4aec0881f54de88ef45f58a70ae 100644
|
| --- a/content/common/gpu/image_transport_surface_linux.cc
|
| +++ b/content/common/gpu/image_transport_surface_linux.cc
|
| @@ -89,7 +89,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
|
| @@ -136,7 +136,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:
|
| @@ -318,12 +318,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;
|
| }
|
| }
|
|
|
| @@ -514,13 +523,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();
|
| }
|
|
|