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

Unified Diff: content/renderer/android/synchronous_compositor_output_surface.cc

Issue 1958803003: sync compostor: Return resources async IPC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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: content/renderer/android/synchronous_compositor_output_surface.cc
diff --git a/content/renderer/android/synchronous_compositor_output_surface.cc b/content/renderer/android/synchronous_compositor_output_surface.cc
index 7deec8c8fd7be71118291303095c79163070d825..5feb429d0ec532a27456a0b49686ab56912ac7a3 100644
--- a/content/renderer/android/synchronous_compositor_output_surface.cc
+++ b/content/renderer/android/synchronous_compositor_output_surface.cc
@@ -11,12 +11,15 @@
#include "cc/output/context_provider.h"
#include "cc/output/output_surface_client.h"
#include "cc/output/software_output_device.h"
+#include "content/common/android/sync_compositor_messages.h"
#include "content/renderer/android/synchronous_compositor_external_begin_frame_source.h"
#include "content/renderer/android/synchronous_compositor_registry.h"
#include "content/renderer/gpu/frame_swap_message_queue.h"
#include "gpu/command_buffer/client/context_support.h"
#include "gpu/command_buffer/client/gles2_interface.h"
#include "gpu/command_buffer/common/gpu_memory_allocation.h"
+#include "ipc/ipc_message.h"
+#include "ipc/ipc_message_macros.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/skia_util.h"
@@ -99,6 +102,16 @@ void SynchronousCompositorOutputSurface::SetSyncClient(
sync_client_ = compositor;
}
+bool SynchronousCompositorOutputSurface::OnMessageReceived(
+ const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorOutputSurface, message)
+ IPC_MESSAGE_HANDLER(SyncCompositorMsg_ReclaimResources, OnReclaimResources)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
bool SynchronousCompositorOutputSurface::BindToClient(
cc::OutputSurfaceClient* surface_client) {
DCHECK(CalledOnValidThread());
@@ -224,11 +237,14 @@ void SynchronousCompositorOutputSurface::InvokeComposite(
client_->DidSwapBuffersComplete();
}
-void SynchronousCompositorOutputSurface::ReturnResources(
+void SynchronousCompositorOutputSurface::OnReclaimResources(
uint32_t output_surface_id,
- const cc::CompositorFrameAck& frame_ack) {
- if (output_surface_id_ == output_surface_id)
- ReclaimResources(&frame_ack);
+ const cc::CompositorFrameAck& ack) {
+ // Ignore message if it's a stale one coming from a different output surface
+ // (e.g. after a lost context).
+ if (output_surface_id != output_surface_id_)
+ return;
+ ReclaimResources(&ack);
}
void SynchronousCompositorOutputSurface::SetMemoryPolicy(size_t bytes_limit) {

Powered by Google App Engine
This is Rietveld 408576698