OLD | NEW |
1 // Copyright (c) 2010 The Native Client Authors. All rights reserved. | 1 // Copyright (c) 2010 The Native Client Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "native_client/src/include/portability.h" | 5 #include "native_client/src/include/portability.h" |
6 #include "native_client/src/include/nacl_macros.h" | 6 #include "native_client/src/include/nacl_macros.h" |
7 #include "native_client/src/shared/ppapi_proxy/browser_globals.h" | 7 #include "native_client/src/shared/ppapi_proxy/browser_globals.h" |
8 #include "native_client/src/shared/ppapi_proxy/utility.h" | 8 #include "native_client/src/shared/ppapi_proxy/utility.h" |
9 #include "ppapi/c/ppb_graphics_2d.h" | 9 #include "ppapi/c/ppb_graphics_2d.h" |
10 #include "ppapi/c/pp_point.h" | 10 #include "ppapi/c/pp_point.h" |
11 #include "ppapi/c/pp_rect.h" | 11 #include "ppapi/c/pp_rect.h" |
12 #include "ppapi/c/pp_size.h" | 12 #include "ppapi/c/pp_size.h" |
13 #include "srpcgen/ppb_rpc.h" | 13 #include "srpcgen/ppb_rpc.h" |
14 | 14 |
15 // | 15 // |
16 // The following methods are the SRPC dispatchers for ppapi/c/ppb_graphics_2d.h. | 16 // The following methods are the SRPC dispatchers for ppapi/c/ppb_graphics_2d.h. |
17 // | 17 // |
18 | 18 |
19 void PpbGraphics2DRpcServer::PPB_Graphics2D_Create(NaClSrpcRpc* rpc, | 19 void PpbGraphics2DRpcServer::PPB_Graphics2D_Create(NaClSrpcRpc* rpc, |
20 NaClSrpcClosure* done, | 20 NaClSrpcClosure* done, |
21 int64_t module, | 21 PP_Module module, |
22 nacl_abi_size_t size_bytes, | 22 nacl_abi_size_t size_bytes, |
23 int32_t* size, | 23 int32_t* size, |
24 int32_t is_always_opaque, | 24 int32_t is_always_opaque, |
25 int64_t* resource) { | 25 PP_Resource* resource) { |
26 NaClSrpcClosureRunner runner(done); | 26 NaClSrpcClosureRunner runner(done); |
27 rpc->result = NACL_SRPC_RESULT_APP_ERROR; | 27 rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
28 *resource = ppapi_proxy::kInvalidResourceId; | 28 *resource = ppapi_proxy::kInvalidResourceId; |
29 if (size_bytes != sizeof(struct PP_Size)) { | 29 if (size_bytes != sizeof(struct PP_Size)) { |
30 return; | 30 return; |
31 } | 31 } |
32 PP_Resource pp_resource = ppapi_proxy::PPBGraphics2DInterface()->Create( | 32 *resource = ppapi_proxy::PPBGraphics2DInterface()->Create( |
33 static_cast<PP_Module>(module), | 33 module, |
34 const_cast<const struct PP_Size*>( | 34 const_cast<const struct PP_Size*>( |
35 reinterpret_cast<struct PP_Size*>(size)), | 35 reinterpret_cast<struct PP_Size*>(size)), |
36 (is_always_opaque ? PP_TRUE : PP_FALSE)); | 36 (is_always_opaque ? PP_TRUE : PP_FALSE)); |
37 *resource = static_cast<int64_t>(pp_resource); | |
38 rpc->result = NACL_SRPC_RESULT_OK; | 37 rpc->result = NACL_SRPC_RESULT_OK; |
39 } | 38 } |
40 | 39 |
41 void PpbGraphics2DRpcServer::PPB_Graphics2D_IsGraphics2D(NaClSrpcRpc* rpc, | 40 void PpbGraphics2DRpcServer::PPB_Graphics2D_IsGraphics2D(NaClSrpcRpc* rpc, |
42 NaClSrpcClosure* done, | 41 NaClSrpcClosure* done, |
43 int64_t resource, | 42 PP_Resource resource, |
44 int32_t* success) { | 43 int32_t* success) { |
45 NaClSrpcClosureRunner runner(done); | 44 NaClSrpcClosureRunner runner(done); |
46 rpc->result = NACL_SRPC_RESULT_APP_ERROR; | 45 rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
47 *success = 0; | 46 *success = 0; |
48 PP_Bool pp_success = | 47 PP_Bool pp_success = |
49 ppapi_proxy::PPBGraphics2DInterface()->IsGraphics2D( | 48 ppapi_proxy::PPBGraphics2DInterface()->IsGraphics2D(resource); |
50 static_cast<PP_Resource>(resource)); | |
51 *success = (pp_success == PP_TRUE); | 49 *success = (pp_success == PP_TRUE); |
52 rpc->result = NACL_SRPC_RESULT_OK; | 50 rpc->result = NACL_SRPC_RESULT_OK; |
53 } | 51 } |
54 | 52 |
55 void PpbGraphics2DRpcServer::PPB_Graphics2D_Describe( | 53 void PpbGraphics2DRpcServer::PPB_Graphics2D_Describe( |
56 NaClSrpcRpc* rpc, | 54 NaClSrpcRpc* rpc, |
57 NaClSrpcClosure* done, | 55 NaClSrpcClosure* done, |
58 int64_t graphics_2d, | 56 PP_Resource graphics_2d, |
59 nacl_abi_size_t* size_bytes, | 57 nacl_abi_size_t* size_bytes, |
60 int32_t* size, | 58 int32_t* size, |
61 int32_t* is_always_opaque, | 59 int32_t* is_always_opaque, |
62 int32_t* success) { | 60 int32_t* success) { |
63 NaClSrpcClosureRunner runner(done); | 61 NaClSrpcClosureRunner runner(done); |
64 rpc->result = NACL_SRPC_RESULT_APP_ERROR; | 62 rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
65 *success = 0; | 63 *success = 0; |
66 if (*size_bytes != sizeof(struct PP_Size)) { | 64 if (*size_bytes != sizeof(struct PP_Size)) { |
67 return; | 65 return; |
68 } | 66 } |
69 PP_Bool is_opaque; | 67 PP_Bool is_opaque; |
70 PP_Bool pp_success = ppapi_proxy::PPBGraphics2DInterface()->Describe( | 68 PP_Bool pp_success = ppapi_proxy::PPBGraphics2DInterface()->Describe( |
71 static_cast<PP_Resource>(graphics_2d), | 69 graphics_2d, reinterpret_cast<struct PP_Size*>(size), &is_opaque); |
72 reinterpret_cast<struct PP_Size*>(size), | |
73 &is_opaque); | |
74 *is_always_opaque = (is_opaque == PP_TRUE); | 70 *is_always_opaque = (is_opaque == PP_TRUE); |
75 *success = (pp_success == PP_TRUE); | 71 *success = (pp_success == PP_TRUE); |
76 rpc->result = NACL_SRPC_RESULT_OK; | 72 rpc->result = NACL_SRPC_RESULT_OK; |
77 } | 73 } |
78 | 74 |
79 void PpbGraphics2DRpcServer::PPB_Graphics2D_PaintImageData( | 75 void PpbGraphics2DRpcServer::PPB_Graphics2D_PaintImageData( |
80 NaClSrpcRpc* rpc, | 76 NaClSrpcRpc* rpc, |
81 NaClSrpcClosure* done, | 77 NaClSrpcClosure* done, |
82 int64_t graphics_2d, | 78 PP_Resource graphics_2d, |
83 int64_t image, | 79 PP_Resource image, |
84 nacl_abi_size_t top_left_bytes, | 80 nacl_abi_size_t top_left_bytes, |
85 int32_t* top_left, | 81 int32_t* top_left, |
86 nacl_abi_size_t src_rect_bytes, | 82 nacl_abi_size_t src_rect_bytes, |
87 int32_t* src_rect) { | 83 int32_t* src_rect) { |
88 NaClSrpcClosureRunner runner(done); | 84 NaClSrpcClosureRunner runner(done); |
89 rpc->result = NACL_SRPC_RESULT_APP_ERROR; | 85 rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
90 if (top_left_bytes != sizeof(struct PP_Point) || | 86 if (top_left_bytes != sizeof(struct PP_Point) || |
91 src_rect_bytes != sizeof(struct PP_Rect)) { | 87 src_rect_bytes != sizeof(struct PP_Rect)) { |
92 return; | 88 return; |
93 } | 89 } |
94 ppapi_proxy::PPBGraphics2DInterface()->PaintImageData( | 90 ppapi_proxy::PPBGraphics2DInterface()->PaintImageData( |
95 static_cast<PP_Resource>(graphics_2d), | 91 graphics_2d, |
96 static_cast<PP_Resource>(image), | 92 image, |
97 const_cast<const struct PP_Point*>( | 93 const_cast<const struct PP_Point*>( |
98 reinterpret_cast<struct PP_Point*>(top_left)), | 94 reinterpret_cast<struct PP_Point*>(top_left)), |
99 const_cast<const struct PP_Rect*>( | 95 const_cast<const struct PP_Rect*>( |
100 reinterpret_cast<struct PP_Rect*>(src_rect))); | 96 reinterpret_cast<struct PP_Rect*>(src_rect))); |
101 rpc->result = NACL_SRPC_RESULT_OK; | 97 rpc->result = NACL_SRPC_RESULT_OK; |
102 } | 98 } |
103 | 99 |
104 void PpbGraphics2DRpcServer::PPB_Graphics2D_Scroll( | 100 void PpbGraphics2DRpcServer::PPB_Graphics2D_Scroll( |
105 NaClSrpcRpc* rpc, | 101 NaClSrpcRpc* rpc, |
106 NaClSrpcClosure* done, | 102 NaClSrpcClosure* done, |
107 int64_t graphics_2d, | 103 PP_Resource graphics_2d, |
108 nacl_abi_size_t clip_rect_bytes, | 104 nacl_abi_size_t clip_rect_bytes, |
109 int32_t* clip_rect, | 105 int32_t* clip_rect, |
110 nacl_abi_size_t amount_bytes, | 106 nacl_abi_size_t amount_bytes, |
111 int32_t* amount) { | 107 int32_t* amount) { |
112 NaClSrpcClosureRunner runner(done); | 108 NaClSrpcClosureRunner runner(done); |
113 rpc->result = NACL_SRPC_RESULT_APP_ERROR; | 109 rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
114 if (clip_rect_bytes != sizeof(struct PP_Rect) || | 110 if (clip_rect_bytes != sizeof(struct PP_Rect) || |
115 amount_bytes != sizeof(struct PP_Point)) { | 111 amount_bytes != sizeof(struct PP_Point)) { |
116 return; | 112 return; |
117 } | 113 } |
118 ppapi_proxy::PPBGraphics2DInterface()->Scroll( | 114 ppapi_proxy::PPBGraphics2DInterface()->Scroll( |
119 static_cast<PP_Resource>(graphics_2d), | 115 graphics_2d, |
120 const_cast<const struct PP_Rect*>( | 116 const_cast<const struct PP_Rect*>( |
121 reinterpret_cast<struct PP_Rect*>(clip_rect)), | 117 reinterpret_cast<struct PP_Rect*>(clip_rect)), |
122 const_cast<const struct PP_Point*>( | 118 const_cast<const struct PP_Point*>( |
123 reinterpret_cast<struct PP_Point*>(amount))); | 119 reinterpret_cast<struct PP_Point*>(amount))); |
124 rpc->result = NACL_SRPC_RESULT_OK; | 120 rpc->result = NACL_SRPC_RESULT_OK; |
125 } | 121 } |
126 | 122 |
127 void PpbGraphics2DRpcServer::PPB_Graphics2D_ReplaceContents( | 123 void PpbGraphics2DRpcServer::PPB_Graphics2D_ReplaceContents( |
128 NaClSrpcRpc* rpc, | 124 NaClSrpcRpc* rpc, |
129 NaClSrpcClosure* done, | 125 NaClSrpcClosure* done, |
130 int64_t graphics_2d, | 126 PP_Resource graphics_2d, |
131 int64_t image) { | 127 PP_Resource image) { |
132 NaClSrpcClosureRunner runner(done); | 128 NaClSrpcClosureRunner runner(done); |
133 rpc->result = NACL_SRPC_RESULT_APP_ERROR; | 129 rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
134 ppapi_proxy::PPBGraphics2DInterface()->ReplaceContents( | 130 ppapi_proxy::PPBGraphics2DInterface()->ReplaceContents(graphics_2d, image); |
135 static_cast<PP_Resource>(graphics_2d), | |
136 static_cast<PP_Resource>(image)); | |
137 rpc->result = NACL_SRPC_RESULT_OK; | 131 rpc->result = NACL_SRPC_RESULT_OK; |
138 } | 132 } |
139 | 133 |
140 // Flush is handled on the upcall thread, where another RPC service | 134 // Flush is handled on the upcall thread, where another RPC service |
141 // (PppUpcallRpcServer) is exported. | 135 // (PppUpcallRpcServer) is exported. |
OLD | NEW |