1 /*
2    (c) Copyright 2001-2011  The world wide DirectFB Open Source Community (directfb.org)
3    (c) Copyright 2000-2004  Convergence (integrated media) GmbH
4 
5    All rights reserved.
6 
7    Written by Denis Oliver Kropp <dok@directfb.org>,
8               Andreas Hundt <andi@fischlustig.de>,
9               Sven Neumann <neo@directfb.org>,
10               Ville Syrjälä <syrjala@sci.fi> and
11               Claudio Ciccani <klan@users.sf.net>.
12 
13    This library is free software; you can redistribute it and/or
14    modify it under the terms of the GNU Lesser General Public
15    License as published by the Free Software Foundation; either
16    version 2 of the License, or (at your option) any later version.
17 
18    This library is distributed in the hope that it will be useful,
19    but WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21    Lesser General Public License for more details.
22 
23    You should have received a copy of the GNU Lesser General Public
24    License along with this library; if not, write to the
25    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
26    Boston, MA 02111-1307, USA.
27 */
28 
29 #ifndef ___CoreDFB__H___
30 #define ___CoreDFB__H___
31 
32 #include <core/CoreDFB_includes.h>
33 
34 /**********************************************************************************************************************
35  * CoreDFB
36  */
37 
38 #ifdef __cplusplus
39 #include <core/Interface.h>
40 
41 extern "C" {
42 #endif
43 
44 
45 DFBResult CoreDFB_Register(
46                     CoreDFB                                   *obj,
47                     u32                                        slave_call);
48 
49 DFBResult CoreDFB_CreateSurface(
50                     CoreDFB                                   *obj,
51                     const CoreSurfaceConfig                   *config,
52                     CoreSurfaceTypeFlags                       type,
53                     u64                                        resource_id,
54                     CorePalette                               *palette,
55                     CoreSurface                              **ret_surface);
56 
57 DFBResult CoreDFB_CreatePalette(
58                     CoreDFB                                   *obj,
59                     u32                                        size,
60                     CorePalette                              **ret_palette);
61 
62 DFBResult CoreDFB_CreateState(
63                     CoreDFB                                   *obj,
64                     CoreGraphicsState                        **ret_state);
65 
66 DFBResult CoreDFB_WaitIdle(
67                     CoreDFB                                   *obj
68 );
69 
70 DFBResult CoreDFB_CreateImageProvider(
71                     CoreDFB                                   *obj,
72                     u32                                        buffer_call,
73                     u32                                       *ret_call);
74 
75 
76 void CoreDFB_Init_Dispatch(
77                     CoreDFB              *core,
78                     CoreDFB              *obj,
79                     FusionCall           *call
80 );
81 
82 void  CoreDFB_Deinit_Dispatch(
83                     FusionCall           *call
84 );
85 
86 
87 #ifdef __cplusplus
88 }
89 #endif
90 
91 
92 
93 
94 /*
95  * CoreDFB Calls
96  */
97 typedef enum {
98     _CoreDFB_Register = 1,
99     _CoreDFB_CreateSurface = 2,
100     _CoreDFB_CreatePalette = 3,
101     _CoreDFB_CreateState = 4,
102     _CoreDFB_WaitIdle = 5,
103     _CoreDFB_CreateImageProvider = 6,
104 } CoreDFBCall;
105 
106 /*
107  * CoreDFB_Register
108  */
109 typedef struct {
110     u32                                        slave_call;
111 } CoreDFBRegister;
112 
113 typedef struct {
114     DFBResult                                  result;
115 } CoreDFBRegisterReturn;
116 
117 
118 /*
119  * CoreDFB_CreateSurface
120  */
121 typedef struct {
122     CoreSurfaceConfig                          config;
123     CoreSurfaceTypeFlags                       type;
124     u64                                        resource_id;
125     bool                                       palette_set;
126     u32                                        palette_id;
127 } CoreDFBCreateSurface;
128 
129 typedef struct {
130     DFBResult                                  result;
131     u32                                        surface_id;
132 } CoreDFBCreateSurfaceReturn;
133 
134 
135 /*
136  * CoreDFB_CreatePalette
137  */
138 typedef struct {
139     u32                                        size;
140 } CoreDFBCreatePalette;
141 
142 typedef struct {
143     DFBResult                                  result;
144     u32                                        palette_id;
145 } CoreDFBCreatePaletteReturn;
146 
147 
148 /*
149  * CoreDFB_CreateState
150  */
151 typedef struct {
152 } CoreDFBCreateState;
153 
154 typedef struct {
155     DFBResult                                  result;
156     u32                                        state_id;
157 } CoreDFBCreateStateReturn;
158 
159 
160 /*
161  * CoreDFB_WaitIdle
162  */
163 typedef struct {
164 } CoreDFBWaitIdle;
165 
166 typedef struct {
167     DFBResult                                  result;
168 } CoreDFBWaitIdleReturn;
169 
170 
171 /*
172  * CoreDFB_CreateImageProvider
173  */
174 typedef struct {
175     u32                                        buffer_call;
176 } CoreDFBCreateImageProvider;
177 
178 typedef struct {
179     DFBResult                                  result;
180     u32                                        call;
181 } CoreDFBCreateImageProviderReturn;
182 
183 
184 DFBResult ICore_Real__Register( CoreDFB *obj,
185                     u32                                        slave_call );
186 
187 DFBResult ICore_Real__CreateSurface( CoreDFB *obj,
188                     const CoreSurfaceConfig                   *config,
189                     CoreSurfaceTypeFlags                       type,
190                     u64                                        resource_id,
191                     CorePalette                               *palette,
192                     CoreSurface                              **ret_surface );
193 
194 DFBResult ICore_Real__CreatePalette( CoreDFB *obj,
195                     u32                                        size,
196                     CorePalette                              **ret_palette );
197 
198 DFBResult ICore_Real__CreateState( CoreDFB *obj,
199                     CoreGraphicsState                        **ret_state );
200 
201 DFBResult ICore_Real__WaitIdle( CoreDFB *obj
202  );
203 
204 DFBResult ICore_Real__CreateImageProvider( CoreDFB *obj,
205                     u32                                        buffer_call,
206                     u32                                       *ret_call );
207 
208 DFBResult ICore_Requestor__Register( CoreDFB *obj,
209                     u32                                        slave_call );
210 
211 DFBResult ICore_Requestor__CreateSurface( CoreDFB *obj,
212                     const CoreSurfaceConfig                   *config,
213                     CoreSurfaceTypeFlags                       type,
214                     u64                                        resource_id,
215                     CorePalette                               *palette,
216                     CoreSurface                              **ret_surface );
217 
218 DFBResult ICore_Requestor__CreatePalette( CoreDFB *obj,
219                     u32                                        size,
220                     CorePalette                              **ret_palette );
221 
222 DFBResult ICore_Requestor__CreateState( CoreDFB *obj,
223                     CoreGraphicsState                        **ret_state );
224 
225 DFBResult ICore_Requestor__WaitIdle( CoreDFB *obj
226  );
227 
228 DFBResult ICore_Requestor__CreateImageProvider( CoreDFB *obj,
229                     u32                                        buffer_call,
230                     u32                                       *ret_call );
231 
232 
233 DFBResult CoreDFBDispatch__Dispatch( CoreDFB *obj,
234                     FusionID      caller,
235                     int           method,
236                     void         *ptr,
237                     unsigned int  length,
238                     void         *ret_ptr,
239                     unsigned int  ret_size,
240                     unsigned int *ret_length );
241 
242 
243 #endif
244