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..e7852d1d5894ac218e3b777de3064b13d2e1ded9 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,23 @@ gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { |
return default_offscreen_surface_.get(); |
} |
+void GpuChannelManager::OnRelinquishResources() { |
+ if (default_offscreen_surface_.get()) { |
+ default_offscreen_surface_->DestroyAndTerminateDisplay(); |
+ default_offscreen_surface_ = NULL; |
dcheng
2014/11/21 03:06:04
nullptr.
GusFernandez
2014/11/21 19:13:56
Done.
|
+ } |
+#if defined(USE_OZONE) |
+ ui::OzonePlatform::GetInstance()->GetGpuPlatformSupport()-> |
dcheng
2014/11/21 03:06:04
Out of curiosity, did you use clang-format or not?
GusFernandez
2014/11/21 19:13:56
Clang-format does some bad things to this file suc
|
+ RelinquishGpuResources(base::Bind( |
+ &GpuChannelManager::OnResourcesRelinquished, |
+ weak_factory_.GetWeakPtr())); |
+#else |
+ OnResourcesRelinquished(); |
+#endif |
+} |
+ |
+void GpuChannelManager::OnResourcesRelinquished() { |
+ Send(new GpuHostMsg_ResourcesRelinquished()); |
+} |
+ |
} // namespace content |