| Index: content/common/gpu/gpu_channel_manager.cc
|
| diff --git a/content/common/gpu/gpu_channel_manager.cc b/content/common/gpu/gpu_channel_manager.cc
|
| index a073e20151edce4dc033a6d9e54bf3c0196b214a..02f27f28e4b230c9fb12dec6a99bec4cf3896b3c 100644
|
| --- a/content/common/gpu/gpu_channel_manager.cc
|
| +++ b/content/common/gpu/gpu_channel_manager.cc
|
| @@ -20,6 +20,10 @@
|
| #include "ipc/message_filter.h"
|
| #include "ui/gl/gl_bindings.h"
|
| #include "ui/gl/gl_share_group.h"
|
| +#if defined(USE_OZONE)
|
| +#include "ui/ozone/public/gpu_platform_support.h"
|
| +#include "ui/ozone/public/ozone_platform.h"
|
| +#endif
|
|
|
| namespace content {
|
|
|
| @@ -162,6 +166,7 @@ bool GpuChannelManager::OnMessageReceived(const IPC::Message& msg) {
|
| OnCreateViewCommandBuffer)
|
| IPC_MESSAGE_HANDLER(GpuMsg_DestroyGpuMemoryBuffer, OnDestroyGpuMemoryBuffer)
|
| IPC_MESSAGE_HANDLER(GpuMsg_LoadedShader, OnLoadedShader)
|
| + IPC_MESSAGE_HANDLER(GpuMsg_RelinquishResources, OnRelinquishResources)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
| @@ -323,4 +328,24 @@ gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() {
|
| return default_offscreen_surface_.get();
|
| }
|
|
|
| +void GpuChannelManager::OnRelinquishResources() {
|
| + if (default_offscreen_surface_.get()) {
|
| + default_offscreen_surface_->DestroyAndTerminateDisplay();
|
| + default_offscreen_surface_ = nullptr;
|
| + }
|
| +#if defined(USE_OZONE)
|
| + ui::OzonePlatform::GetInstance()
|
| + ->GetGpuPlatformSupport()
|
| + ->RelinquishGpuResources(
|
| + base::Bind(&GpuChannelManager::OnResourcesRelinquished,
|
| + weak_factory_.GetWeakPtr()));
|
| +#else
|
| + OnResourcesRelinquished();
|
| +#endif
|
| +}
|
| +
|
| +void GpuChannelManager::OnResourcesRelinquished() {
|
| + Send(new GpuHostMsg_ResourcesRelinquished());
|
| +}
|
| +
|
| } // namespace content
|
|
|