1// Copyright (c) 2012 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 "ppapi/c/dev/ppb_buffer_dev.h" 6#include "ppapi/thunk/thunk.h" 7#include "ppapi/thunk/enter.h" 8#include "ppapi/thunk/ppb_buffer_api.h" 9#include "ppapi/thunk/resource_creation_api.h" 10 11namespace ppapi { 12namespace thunk { 13 14namespace { 15 16PP_Resource Create(PP_Instance instance, uint32_t size) { 17 EnterResourceCreation enter(instance); 18 if (enter.failed()) 19 return 0; 20 return enter.functions()->CreateBuffer(instance, size); 21} 22 23PP_Bool IsBuffer(PP_Resource resource) { 24 EnterResource<PPB_Buffer_API> enter(resource, false); 25 return PP_FromBool(enter.succeeded()); 26} 27 28PP_Bool Describe(PP_Resource resource, uint32_t* size_in_bytes) { 29 EnterResource<PPB_Buffer_API> enter(resource, true); 30 if (enter.failed()) { 31 *size_in_bytes = 0; 32 return PP_FALSE; 33 } 34 return enter.object()->Describe(size_in_bytes); 35} 36 37void* Map(PP_Resource resource) { 38 EnterResource<PPB_Buffer_API> enter(resource, true); 39 if (enter.failed()) 40 return NULL; 41 return enter.object()->Map(); 42} 43 44void Unmap(PP_Resource resource) { 45 EnterResource<PPB_Buffer_API> enter(resource, true); 46 if (enter.succeeded()) 47 enter.object()->Unmap(); 48} 49 50const PPB_Buffer_Dev g_ppb_buffer_thunk = { 51 &Create, 52 &IsBuffer, 53 &Describe, 54 &Map, 55 &Unmap, 56}; 57 58} // namespace 59 60const PPB_Buffer_Dev_0_4* GetPPB_Buffer_Dev_0_4_Thunk() { 61 return &g_ppb_buffer_thunk; 62} 63 64} // namespace thunk 65} // namespace ppapi 66