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

Side by Side Diff: chrome/renderer/nacl_desc_wrapper_chrome.cc

Issue 969006: Add the descriptor support needed for Pepper in a way that does... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/chrome_renderer.gypi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/shared_memory.h"
6 #include "base/sync_socket.h"
7 #include "chrome/common/transport_dib.h"
8 #include "native_client/src/trusted/desc/nacl_desc_base.h"
9 #include "native_client/src/trusted/desc/nacl_desc_sync_socket.h"
10 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h"
11
12 namespace nacl {
13
14 DescWrapper* DescWrapperFactory::ImportPepperSharedMemory(intptr_t shm_int,
15 size_t size) {
16 base::SharedMemory* shm = reinterpret_cast<base::SharedMemory*>(shm_int);
17 #if defined(OS_LINUX) || defined(OS_MACOSX)
18 return ImportShmHandle(shm->handle().fd, size);
19 #elif defined(OS_WIN)
20 return ImportShmHandle(shm->handle(), size);
21 #else
22 # error "What platform?"
23 #endif
24 }
25
26 DescWrapper* DescWrapperFactory::ImportPepper2DSharedMemory(intptr_t shm_int) {
27 TransportDIB* dib = reinterpret_cast<TransportDIB*>(shm_int);
28 #if defined(OS_LINUX)
29 // TransportDIBs use SysV (X) shared memory on Linux.
30 return ImportSysvShm(dib->handle(), dib->size());
31 #elif defined(OS_MACOSX)
32 // TransportDIBs use mmap shared memory on OSX.
33 return ImportShmHandle(dib->handle().fd, dib->size());
34 #elif defined(OS_WIN)
35 // TransportDIBs use MapViewOfFile shared memory on Windows.
36 return ImportShmHandle(dib->handle(), dib->size());
37 #else
38 # error "What platform?"
39 #endif
40 }
41
42 DescWrapper* DescWrapperFactory::ImportPepperSync(intptr_t sync_int) {
43 base::SyncSocket* sock = reinterpret_cast<base::SyncSocket*>(sync_int);
44 struct NaClDescSyncSocket* ss_desc = NULL;
45 DescWrapper* wrapper = NULL;
46
47 ss_desc = static_cast<NaClDescSyncSocket*>(
48 calloc(1, sizeof(*ss_desc)));
49 if (NULL == ss_desc) {
50 // TODO(sehr): Gotos are awful. Add a scoped_ptr variant that
51 // invokes NaClDescSafeUnref.
52 goto cleanup;
53 }
54 if (!NaClDescSyncSocketCtor(ss_desc, sock->handle())) {
55 free(ss_desc);
56 ss_desc = NULL;
57 goto cleanup;
58 }
59 wrapper = new DescWrapper(common_data_, &ss_desc->base);
60 if (NULL == wrapper) {
61 goto cleanup;
62 }
63 ss_desc = NULL; // DescWrapper takes ownership of ss_desc.
64 return wrapper;
65
66 cleanup:
67 NaClDescSafeUnref(&ss_desc->base);
68 return NULL;
69 }
70
71 } // namespace nacl
OLDNEW
« no previous file with comments | « chrome/chrome_renderer.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698