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

Unified Diff: content/browser/renderer_host/render_message_filter.cc

Issue 1963263002: Fix Mac resize, delete more Mac code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase 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/browser/renderer_host/render_message_filter.cc
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc
index bb8eaa7b48892c828715ce9c44a711eb07944f9a..7f6818b50dfbf1302e2f37c7d42f3e502d4cf3a0 100644
--- a/content/browser/renderer_host/render_message_filter.cc
+++ b/content/browser/renderer_host/render_message_filter.cc
@@ -92,7 +92,7 @@
#endif
#if defined(OS_MACOSX)
-#include "content/browser/renderer_host/render_widget_resize_helper_mac.h"
+#include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
#endif
namespace content {
@@ -110,6 +110,23 @@ base::LazyInstance<gfx::ColorProfile>::Leaky g_color_profile =
LAZY_INSTANCE_INITIALIZER;
#endif
+#if defined(OS_MACOSX)
+void ResizeHelperHandleMsgOnUIThread(int render_process_id,
+ const IPC::Message& message) {
+ RenderProcessHost* host = RenderProcessHost::FromID(render_process_id);
+ if (host)
+ host->OnMessageReceived(message);
+}
+
+void ResizeHelperPostMsgToUIThread(int render_process_id,
+ const IPC::Message& msg) {
+ ui::WindowResizeHelperMac::Get()->task_runner()->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(ResizeHelperHandleMsgOnUIThread, render_process_id, msg),
+ base::TimeDelta());
+}
+#endif
+
void DownloadUrlOnUIThread(std::unique_ptr<DownloadUrlParameters> parameters) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -181,14 +198,15 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewHostMsg_SaveImageFromDataURL,
OnSaveImageFromDataURL)
#if defined(OS_MACOSX)
+ // On Mac, the IPCs ViewHostMsg_SwapCompositorFrame, ViewHostMsg_UpdateRect,
+ // and GpuCommandBufferMsg_SwapBuffersCompleted need to be handled in a
+ // nested message loop during resize.
IPC_MESSAGE_HANDLER_GENERIC(
ViewHostMsg_SwapCompositorFrame,
- RenderWidgetResizeHelper::PostRendererProcessMsg(render_process_id_,
- message))
+ ResizeHelperPostMsgToUIThread(render_process_id_, message))
IPC_MESSAGE_HANDLER_GENERIC(
ViewHostMsg_UpdateRect,
- RenderWidgetResizeHelper::PostRendererProcessMsg(render_process_id_,
- message))
+ ResizeHelperPostMsgToUIThread(render_process_id_, message))
#endif
// NB: The SyncAllocateSharedMemory, SyncAllocateGpuMemoryBuffer, and
// DeletedGpuMemoryBuffer IPCs are handled here for renderer processes. For
« no previous file with comments | « content/browser/renderer_host/compositor_impl_android.cc ('k') | content/browser/renderer_host/render_widget_host_view_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698