diff options
author | erikchen <erikchen@chromium.org> | 2015-11-18 18:47:35 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-19 02:48:19 +0000 |
commit | 885da5130d948ba7f6d721888db7114a4f912789 (patch) | |
tree | 7fba90a6ef5626ce4389ab17a7630de57bd88c66 /remoting/host/desktop_session_agent.cc | |
parent | afeecbf9c6549bdfb0e00492d206f47a3088b40f (diff) | |
download | chromium_src-885da5130d948ba7f6d721888db7114a4f912789.zip chromium_src-885da5130d948ba7f6d721888db7114a4f912789.tar.gz chromium_src-885da5130d948ba7f6d721888db7114a4f912789.tar.bz2 |
mac: Some consumers of SharedMemory require a POSIX fd.
There are two implementations of SharedMemory on OSX: Mach and POSIX. Some
consumers of SharedMemory currently require the POSIX implementation. The
default is going to become Mach. This CL updates some consumers of SharedMemory
to force the construction of a POSIX fd-backed SharedMemory region.
BUG=466437
Review URL: https://codereview.chromium.org/1420503010
Cr-Commit-Position: refs/heads/master@{#360502}
Diffstat (limited to 'remoting/host/desktop_session_agent.cc')
-rw-r--r-- | remoting/host/desktop_session_agent.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/remoting/host/desktop_session_agent.cc b/remoting/host/desktop_session_agent.cc index 23d05f2..2e486c5 100644 --- a/remoting/host/desktop_session_agent.cc +++ b/remoting/host/desktop_session_agent.cc @@ -74,8 +74,16 @@ class DesktopSessionAgent::SharedBuffer : public webrtc::SharedMemory { size_t size, int id) { scoped_ptr<base::SharedMemory> memory(new base::SharedMemory()); +#if defined(OS_MACOSX) && !defined(OS_IOS) + // Remoting does not yet support Mach primitive backed SharedMemory, so + // force the underlying primitive to be a POSIX fd. + // https://crbug.com/547247. + if (!memory->CreateAndMapAnonymousPosix(size)) + return nullptr; +#else if (!memory->CreateAndMapAnonymous(size)) return nullptr; +#endif // defined(OS_MACOSX) && !defined(OS_IOS) return make_scoped_ptr(new SharedBuffer(agent, memory.Pass(), size, id)); } |