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// From ppb_graphics_3d.idl modified Thu Oct 31 12:30:06 2013.
6
7#include "ppapi/c/pp_completion_callback.h"
8#include "ppapi/c/pp_errors.h"
9#include "ppapi/c/ppb_graphics_3d.h"
10#include "ppapi/shared_impl/tracked_callback.h"
11#include "ppapi/thunk/enter.h"
12#include "ppapi/thunk/ppapi_thunk_export.h"
13#include "ppapi/thunk/ppb_graphics_3d_api.h"
14
15namespace ppapi {
16namespace thunk {
17
18namespace {
19
20int32_t GetAttribMaxValue(PP_Resource instance,
21                          int32_t attribute,
22                          int32_t* value) {
23  VLOG(4) << "PPB_Graphics3D::GetAttribMaxValue()";
24  EnterResource<PPB_Graphics3D_API> enter(instance, true);
25  if (enter.failed())
26    return enter.retval();
27  return enter.object()->GetAttribMaxValue(attribute, value);
28}
29
30PP_Resource Create(PP_Instance instance,
31                   PP_Resource share_context,
32                   const int32_t attrib_list[]) {
33  VLOG(4) << "PPB_Graphics3D::Create()";
34  EnterResourceCreation enter(instance);
35  if (enter.failed())
36    return 0;
37  return enter.functions()->CreateGraphics3D(instance,
38                                             share_context,
39                                             attrib_list);
40}
41
42PP_Bool IsGraphics3D(PP_Resource resource) {
43  VLOG(4) << "PPB_Graphics3D::IsGraphics3D()";
44  EnterResource<PPB_Graphics3D_API> enter(resource, false);
45  return PP_FromBool(enter.succeeded());
46}
47
48int32_t GetAttribs(PP_Resource context, int32_t attrib_list[]) {
49  VLOG(4) << "PPB_Graphics3D::GetAttribs()";
50  EnterResource<PPB_Graphics3D_API> enter(context, true);
51  if (enter.failed())
52    return enter.retval();
53  return enter.object()->GetAttribs(attrib_list);
54}
55
56int32_t SetAttribs(PP_Resource context, const int32_t attrib_list[]) {
57  VLOG(4) << "PPB_Graphics3D::SetAttribs()";
58  EnterResource<PPB_Graphics3D_API> enter(context, true);
59  if (enter.failed())
60    return enter.retval();
61  return enter.object()->SetAttribs(attrib_list);
62}
63
64int32_t GetError(PP_Resource context) {
65  VLOG(4) << "PPB_Graphics3D::GetError()";
66  EnterResource<PPB_Graphics3D_API> enter(context, true);
67  if (enter.failed())
68    return enter.retval();
69  return enter.object()->GetError();
70}
71
72int32_t ResizeBuffers(PP_Resource context, int32_t width, int32_t height) {
73  VLOG(4) << "PPB_Graphics3D::ResizeBuffers()";
74  EnterResource<PPB_Graphics3D_API> enter(context, true);
75  if (enter.failed())
76    return enter.retval();
77  return enter.object()->ResizeBuffers(width, height);
78}
79
80int32_t SwapBuffers(PP_Resource context,
81                    struct PP_CompletionCallback callback) {
82  VLOG(4) << "PPB_Graphics3D::SwapBuffers()";
83  EnterResource<PPB_Graphics3D_API> enter(context, callback, true);
84  if (enter.failed())
85    return enter.retval();
86  return enter.SetResult(enter.object()->SwapBuffers(enter.callback()));
87}
88
89const PPB_Graphics3D_1_0 g_ppb_graphics3d_thunk_1_0 = {
90  &GetAttribMaxValue,
91  &Create,
92  &IsGraphics3D,
93  &GetAttribs,
94  &SetAttribs,
95  &GetError,
96  &ResizeBuffers,
97  &SwapBuffers
98};
99
100}  // namespace
101
102PPAPI_THUNK_EXPORT const PPB_Graphics3D_1_0* GetPPB_Graphics3D_1_0_Thunk() {
103  return &g_ppb_graphics3d_thunk_1_0;
104}
105
106}  // namespace thunk
107}  // namespace ppapi
108