Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index 67cd0eb351c6fd4153c3eaf5bc94f2a80b6e6c38..286fffea1b4f71b9e9927d9f8a7f4463aee3330b 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -100,6 +100,7 @@ |
#include "v8/include/v8.h" |
#include "webkit/glue/webkit_glue.h" |
#include "webkit/renderer/appcache/appcache_frontend_impl.h" |
+#include "webkit/renderer/compositor_bindings/web_external_bitmap_impl.h" |
#if defined(OS_WIN) |
#include <windows.h> |
@@ -235,6 +236,10 @@ void AddTraceEvent(char phase, |
} |
#endif |
+scoped_ptr<base::SharedMemory> AllocateSharedMemoryFunction(size_t size) { |
+ return RenderThreadImpl::Get()->HostAllocateSharedMemoryBuffer(size); |
+} |
+ |
} // namespace |
class RenderThreadImpl::GpuVDAContextLostCallback |
@@ -726,6 +731,8 @@ void RenderThreadImpl::EnsureWebKitInitialized() { |
if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) |
ScheduleIdleHandler(kLongIdleHandlerDelayMs); |
+ |
+ webkit::SetSharedMemoryAllocationFunction(AllocateSharedMemoryFunction); |
} |
void RenderThreadImpl::RegisterSchemes() { |
@@ -745,6 +752,7 @@ scoped_ptr<base::SharedMemory> |
if (size > static_cast<size_t>(std::numeric_limits<int>::max())) |
return scoped_ptr<base::SharedMemory>(); |
+#if defined(OS_POSIX) |
piman
2013/07/01 22:45:01
Why the ifdef? This method was sucessfully used on
jbauman
2013/07/02 00:00:40
Sure, but I'd prefer not to have a round-trip to t
piman
2013/07/02 04:00:09
I see, that's an optimization. Maybe worth separat
jbauman
2013/07/02 20:16:19
Ok, I've removed this change and I'll do that in a
|
base::SharedMemoryHandle handle; |
bool success; |
IPC::Message* message = |
@@ -763,6 +771,13 @@ scoped_ptr<base::SharedMemory> |
return scoped_ptr<base::SharedMemory>(); |
return scoped_ptr<base::SharedMemory>(new base::SharedMemory(handle, false)); |
+#else |
+ scoped_ptr<base::SharedMemory> memory(new base::SharedMemory); |
+ |
+ if (!memory->CreateAndMapAnonymous(size)) |
+ return scoped_ptr<base::SharedMemory>(); |
+ return memory.Pass(); |
+#endif |
} |
void RenderThreadImpl::RegisterExtension(v8::Extension* extension) { |