zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SDL_DirectFB_video.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 #include "SDL_config.h"
22 
23 #if SDL_VIDEO_DRIVER_DIRECTFB
24 
25 #include "SDL_DirectFB_video.h"
26 
27 #include "SDL_DirectFB_events.h"
28 /*
29  * #include "SDL_DirectFB_keyboard.h"
30  */
31 #include "SDL_DirectFB_modes.h"
32 #include "SDL_DirectFB_mouse.h"
33 #include "SDL_DirectFB_opengl.h"
34 #include "SDL_DirectFB_window.h"
35 #include "SDL_DirectFB_WM.h"
36 
37 
38 #include "SDL_config.h"
39 
40 /* DirectFB video driver implementation.
41 */
42 
43 #include <fcntl.h>
44 #include <unistd.h>
45 #include <sys/mman.h>
46 
47 #include <directfb.h>
48 #include <directfb_version.h>
49 #include <directfb_strings.h>
50 
51 #include "SDL_video.h"
52 #include "SDL_mouse.h"
53 #include "../SDL_sysvideo.h"
54 #include "../SDL_pixels_c.h"
55 #include "../../events/SDL_events_c.h"
56 #include "SDL_DirectFB_video.h"
57 #include "SDL_DirectFB_events.h"
58 #include "SDL_DirectFB_render.h"
59 #include "SDL_DirectFB_mouse.h"
60 #include "SDL_DirectFB_shape.h"
61 
62 
63 #include "SDL_DirectFB_dyn.h"
64 
65 /* Initialization/Query functions */
66 static int DirectFB_VideoInit(_THIS);
67 static void DirectFB_VideoQuit(_THIS);
68 
69 static int DirectFB_Available(void);
70 static SDL_VideoDevice *DirectFB_CreateDevice(int devindex);
71 
72 VideoBootStrap DirectFB_bootstrap = {
73  "directfb", "DirectFB",
74  DirectFB_Available, DirectFB_CreateDevice
75 };
76 
77 static const DirectFBSurfaceDrawingFlagsNames(drawing_flags);
78 static const DirectFBSurfaceBlittingFlagsNames(blitting_flags);
79 static const DirectFBAccelerationMaskNames(acceleration_mask);
80 
81 /* DirectFB driver bootstrap functions */
82 
83 static int
84 DirectFB_Available(void)
85 {
87  return 0;
89  return 1;
90 }
91 
92 static void
93 DirectFB_DeleteDevice(SDL_VideoDevice * device)
94 {
96  SDL_DFB_FREE(device->driverdata);
97  SDL_DFB_FREE(device);
98 }
99 
100 static SDL_VideoDevice *
101 DirectFB_CreateDevice(int devindex)
102 {
103  SDL_VideoDevice *device;
104 
105  if (!SDL_DirectFB_LoadLibrary()) {
106  return NULL;
107  }
108 
109  /* Initialize all variables that we clean on shutdown */
110  SDL_DFB_ALLOC_CLEAR(device, sizeof(SDL_VideoDevice));
111 
112  /* Set the function pointers */
113 
114  /* Set the function pointers */
115  device->VideoInit = DirectFB_VideoInit;
116  device->VideoQuit = DirectFB_VideoQuit;
135 
136  /* !!! FIXME: implement SetWindowBordered */
137 
138 #if SDL_DIRECTFB_OPENGL
139  device->GL_LoadLibrary = DirectFB_GL_LoadLibrary;
140  device->GL_GetProcAddress = DirectFB_GL_GetProcAddress;
141  device->GL_MakeCurrent = DirectFB_GL_MakeCurrent;
142 
143  device->GL_CreateContext = DirectFB_GL_CreateContext;
144  device->GL_SetSwapInterval = DirectFB_GL_SetSwapInterval;
145  device->GL_GetSwapInterval = DirectFB_GL_GetSwapInterval;
146  device->GL_SwapWindow = DirectFB_GL_SwapWindow;
147  device->GL_DeleteContext = DirectFB_GL_DeleteContext;
148 
149 #endif
150 
151  /* Shaped window support */
155 
156  device->free = DirectFB_DeleteDevice;
157 
158  return device;
159  error:
160  if (device)
161  free(device);
162  return (0);
163 }
164 
165 static void
166 DirectFB_DeviceInformation(IDirectFB * dfb)
167 {
168  DFBGraphicsDeviceDescription desc;
169  int n;
170 
171  dfb->GetDeviceDescription(dfb, &desc);
172 
173  SDL_DFB_LOG( "DirectFB Device Information");
174  SDL_DFB_LOG( "===========================");
175  SDL_DFB_LOG( "Name: %s", desc.name);
176  SDL_DFB_LOG( "Vendor: %s", desc.vendor);
177  SDL_DFB_LOG( "Driver Name: %s", desc.driver.name);
178  SDL_DFB_LOG( "Driver Vendor: %s", desc.driver.vendor);
179  SDL_DFB_LOG( "Driver Version: %d.%d", desc.driver.major,
180  desc.driver.minor);
181 
182  SDL_DFB_LOG( "Video memoory: %d", desc.video_memory);
183 
184  SDL_DFB_LOG( "Blitting flags:");
185  for (n = 0; blitting_flags[n].flag; n++) {
186  if (desc.blitting_flags & blitting_flags[n].flag)
187  SDL_DFB_LOG( " %s", blitting_flags[n].name);
188  }
189 
190  SDL_DFB_LOG( "Drawing flags:");
191  for (n = 0; drawing_flags[n].flag; n++) {
192  if (desc.drawing_flags & drawing_flags[n].flag)
193  SDL_DFB_LOG( " %s", drawing_flags[n].name);
194  }
195 
196 
197  SDL_DFB_LOG( "Acceleration flags:");
198  for (n = 0; acceleration_mask[n].mask; n++) {
199  if (desc.acceleration_mask & acceleration_mask[n].mask)
200  SDL_DFB_LOG( " %s", acceleration_mask[n].name);
201  }
202 
203 
204 }
205 
206 static int readBoolEnv(const char *env_name, int def_val)
207 {
208  char *stemp;
209 
210  stemp = SDL_getenv(env_name);
211  if (stemp)
212  return atoi(stemp);
213  else
214  return def_val;
215 }
216 
217 static int
218 DirectFB_VideoInit(_THIS)
219 {
220  IDirectFB *dfb = NULL;
221  DFB_DeviceData *devdata = NULL;
222  DFBResult ret;
223 
224  SDL_DFB_ALLOC_CLEAR(devdata, sizeof(*devdata));
225 
226  SDL_DFB_CHECKERR(DirectFBInit(NULL, NULL));
227 
228  /* avoid switching to the framebuffer when we
229  * are running X11 */
230  ret = readBoolEnv(DFBENV_USE_X11_CHECK , 1);
231  if (ret) {
232  if (SDL_getenv("DISPLAY"))
233  DirectFBSetOption("system", "x11");
234  else
235  DirectFBSetOption("disable-module", "x11input");
236  }
237 
238  /* FIXME: Reenable as default once multi kbd/mouse interface is sorted out */
239  devdata->use_linux_input = readBoolEnv(DFBENV_USE_LINUX_INPUT, 0); /* default: on */
240 
241  if (!devdata->use_linux_input)
242  {
243  SDL_DFB_LOG("Disabling linxu input\n");
244  DirectFBSetOption("disable-module", "linux_input");
245  }
246 
247  SDL_DFB_CHECKERR(DirectFBCreate(&dfb));
248 
249  DirectFB_DeviceInformation(dfb);
250 
251  devdata->use_yuv_underlays = readBoolEnv(DFBENV_USE_YUV_UNDERLAY, 0); /* default: off */
252  devdata->use_yuv_direct = readBoolEnv(DFBENV_USE_YUV_DIRECT, 0); /* default is off! */
253 
254  /* Create global Eventbuffer for axis events */
255  if (devdata->use_linux_input) {
256  SDL_DFB_CHECKERR(dfb->CreateInputEventBuffer(dfb, DICAPS_ALL,
257  DFB_TRUE,
258  &devdata->events));
259  } else {
260  SDL_DFB_CHECKERR(dfb->CreateInputEventBuffer(dfb, DICAPS_AXES
261  /* DICAPS_ALL */ ,
262  DFB_TRUE,
263  &devdata->events));
264  }
265 
266  /* simple window manager support */
267  devdata->has_own_wm = readBoolEnv(DFBENV_USE_WM, 0);
268 
269  devdata->initialized = 1;
270 
271  devdata->dfb = dfb;
272  devdata->firstwin = NULL;
273  devdata->grabbed_window = NULL;
274 
275  _this->driverdata = devdata;
276 
278 
279 #if SDL_DIRECTFB_OPENGL
280  DirectFB_GL_Initialize(_this);
281 #endif
282 
285 
286  return 0;
287 
288 
289  error:
290  SDL_DFB_FREE(devdata);
291  SDL_DFB_RELEASE(dfb);
292  return -1;
293 }
294 
295 static void
296 DirectFB_VideoQuit(_THIS)
297 {
299 
303 
304  devdata->events->Reset(devdata->events);
305  SDL_DFB_RELEASE(devdata->events);
306  SDL_DFB_RELEASE(devdata->dfb);
307 
308 #if SDL_DIRECTFB_OPENGL
309  DirectFB_GL_Shutdown(_this);
310 #endif
311 
312  devdata->initialized = 0;
313 }
314 
315 /* DirectFB driver general support functions */
316 
317 static const struct {
318  DFBSurfacePixelFormat dfb;
319  Uint32 sdl;
320 } pixelformat_tab[] =
321 {
322  { DSPF_RGB32, SDL_PIXELFORMAT_RGB888 }, /* 24 bit RGB (4 byte, nothing@24, red 8@16, green 8@8, blue 8@0) */
323  { DSPF_ARGB, SDL_PIXELFORMAT_ARGB8888 }, /* 32 bit ARGB (4 byte, alpha 8@24, red 8@16, green 8@8, blue 8@0) */
324  { DSPF_RGB16, SDL_PIXELFORMAT_RGB565 }, /* 16 bit RGB (2 byte, red 5@11, green 6@5, blue 5@0) */
325  { DSPF_RGB332, SDL_PIXELFORMAT_RGB332 }, /* 8 bit RGB (1 byte, red 3@5, green 3@2, blue 2@0) */
326  { DSPF_ARGB4444, SDL_PIXELFORMAT_ARGB4444 }, /* 16 bit ARGB (2 byte, alpha 4@12, red 4@8, green 4@4, blue 4@0) */
327  { DSPF_ARGB1555, SDL_PIXELFORMAT_ARGB1555 }, /* 16 bit ARGB (2 byte, alpha 1@15, red 5@10, green 5@5, blue 5@0) */
328  { DSPF_RGB24, SDL_PIXELFORMAT_RGB24 }, /* 24 bit RGB (3 byte, red 8@16, green 8@8, blue 8@0) */
329  { DSPF_RGB444, SDL_PIXELFORMAT_RGB444 }, /* 16 bit RGB (2 byte, nothing @12, red 4@8, green 4@4, blue 4@0) */
330  { DSPF_YV12, SDL_PIXELFORMAT_YV12 }, /* 12 bit YUV (8 bit Y plane followed by 8 bit quarter size V/U planes) */
331  { DSPF_I420,SDL_PIXELFORMAT_IYUV }, /* 12 bit YUV (8 bit Y plane followed by 8 bit quarter size U/V planes) */
332  { DSPF_YUY2, SDL_PIXELFORMAT_YUY2 }, /* 16 bit YUV (4 byte/ 2 pixel, macropixel contains CbYCrY [31:0]) */
333  { DSPF_UYVY, SDL_PIXELFORMAT_UYVY }, /* 16 bit YUV (4 byte/ 2 pixel, macropixel contains YCbYCr [31:0]) */
334  { DSPF_RGB555, SDL_PIXELFORMAT_RGB555 }, /* 16 bit RGB (2 byte, nothing @15, red 5@10, green 5@5, blue 5@0) */
335 #if (ENABLE_LUT8)
336  { DSPF_LUT8, SDL_PIXELFORMAT_INDEX8 }, /* 8 bit LUT (8 bit color and alpha lookup from palette) */
337 #endif
338 
339 #if (DFB_VERSION_ATLEAST(1,2,0))
340  { DSPF_BGR555, SDL_PIXELFORMAT_BGR555 }, /* 16 bit BGR (2 byte, nothing @15, blue 5@10, green 5@5, red 5@0) */
341 #else
342  { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR555 },
343 #endif
344 
345  /* Pfff ... nonmatching formats follow */
346 
347  { DSPF_ALUT44, SDL_PIXELFORMAT_UNKNOWN }, /* 8 bit ALUT (1 byte, alpha 4@4, color lookup 4@0) */
348  { DSPF_A8, SDL_PIXELFORMAT_UNKNOWN }, /* 8 bit alpha (1 byte, alpha 8@0), e.g. anti-aliased glyphs */
349  { DSPF_AiRGB, SDL_PIXELFORMAT_UNKNOWN }, /* 32 bit ARGB (4 byte, inv. alpha 8@24, red 8@16, green 8@8, blue 8@0) */
350  { DSPF_A1, SDL_PIXELFORMAT_UNKNOWN }, /* 1 bit alpha (1 byte/ 8 pixel, most significant bit used first) */
351  { DSPF_NV12, SDL_PIXELFORMAT_UNKNOWN }, /* 12 bit YUV (8 bit Y plane followed by one 16 bit quarter size CbCr [15:0] plane) */
352  { DSPF_NV16, SDL_PIXELFORMAT_UNKNOWN }, /* 16 bit YUV (8 bit Y plane followed by one 16 bit half width CbCr [15:0] plane) */
353  { DSPF_ARGB2554, SDL_PIXELFORMAT_UNKNOWN }, /* 16 bit ARGB (2 byte, alpha 2@14, red 5@9, green 5@4, blue 4@0) */
354  { DSPF_NV21, SDL_PIXELFORMAT_UNKNOWN }, /* 12 bit YUV (8 bit Y plane followed by one 16 bit quarter size CrCb [15:0] plane) */
355  { DSPF_AYUV, SDL_PIXELFORMAT_UNKNOWN }, /* 32 bit AYUV (4 byte, alpha 8@24, Y 8@16, Cb 8@8, Cr 8@0) */
356  { DSPF_A4, SDL_PIXELFORMAT_UNKNOWN }, /* 4 bit alpha (1 byte/ 2 pixel, more significant nibble used first) */
357  { DSPF_ARGB1666, SDL_PIXELFORMAT_UNKNOWN }, /* 1 bit alpha (3 byte/ alpha 1@18, red 6@16, green 6@6, blue 6@0) */
358  { DSPF_ARGB6666, SDL_PIXELFORMAT_UNKNOWN }, /* 6 bit alpha (3 byte/ alpha 6@18, red 6@16, green 6@6, blue 6@0) */
359  { DSPF_RGB18, SDL_PIXELFORMAT_UNKNOWN }, /* 6 bit RGB (3 byte/ red 6@16, green 6@6, blue 6@0) */
360  { DSPF_LUT2, SDL_PIXELFORMAT_UNKNOWN }, /* 2 bit LUT (1 byte/ 4 pixel, 2 bit color and alpha lookup from palette) */
361 
362 #if (DFB_VERSION_ATLEAST(1,3,0))
363  { DSPF_RGBA4444, SDL_PIXELFORMAT_UNKNOWN }, /* 16 bit RGBA (2 byte, red 4@12, green 4@8, blue 4@4, alpha 4@0) */
364 #endif
365 
366 #if (DFB_VERSION_ATLEAST(1,4,3))
367  { DSPF_RGBA5551, SDL_PIXELFORMAT_UNKNOWN }, /* 16 bit RGBA (2 byte, red 5@11, green 5@6, blue 5@1, alpha 1@0) */
368  { DSPF_YUV444P, SDL_PIXELFORMAT_UNKNOWN }, /* 24 bit full YUV planar (8 bit Y plane followed by an 8 bit Cb and an 8 bit Cr plane) */
369  { DSPF_ARGB8565, SDL_PIXELFORMAT_UNKNOWN }, /* 24 bit ARGB (3 byte, alpha 8@16, red 5@11, green 6@5, blue 5@0) */
370  { DSPF_AVYU, SDL_PIXELFORMAT_UNKNOWN }, /* 32 bit AVYU 4:4:4 (4 byte, alpha 8@24, Cr 8@16, Y 8@8, Cb 8@0) */
371  { DSPF_VYU, SDL_PIXELFORMAT_UNKNOWN }, /* 24 bit VYU 4:4:4 (3 byte, Cr 8@16, Y 8@8, Cb 8@0) */
372 #endif
373 
374  { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX1LSB },
375  { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX1MSB },
376  { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX4LSB },
377  { DSPF_UNKNOWN, SDL_PIXELFORMAT_INDEX4MSB },
378  { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR24 },
379  { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR888 },
380  { DSPF_UNKNOWN, SDL_PIXELFORMAT_RGBA8888 },
381  { DSPF_UNKNOWN, SDL_PIXELFORMAT_ABGR8888 },
382  { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGRA8888 },
383  { DSPF_UNKNOWN, SDL_PIXELFORMAT_ARGB2101010 },
384  { DSPF_UNKNOWN, SDL_PIXELFORMAT_ABGR4444 },
385  { DSPF_UNKNOWN, SDL_PIXELFORMAT_ABGR1555 },
386  { DSPF_UNKNOWN, SDL_PIXELFORMAT_BGR565 },
387  { DSPF_UNKNOWN, SDL_PIXELFORMAT_YVYU },
388 };
389 
390 Uint32
391 DirectFB_DFBToSDLPixelFormat(DFBSurfacePixelFormat pixelformat)
392 {
393  int i;
394 
395  for (i=0; pixelformat_tab[i].dfb != DSPF_UNKNOWN; i++)
396  if (pixelformat_tab[i].dfb == pixelformat)
397  {
398  return pixelformat_tab[i].sdl;
399  }
401 }
402 
403 DFBSurfacePixelFormat
405 {
406  int i;
407 
408  for (i=0; pixelformat_tab[i].dfb != DSPF_UNKNOWN; i++)
409  if (pixelformat_tab[i].sdl == format)
410  {
411  return pixelformat_tab[i].dfb;
412  }
413  return DSPF_UNKNOWN;
414 }
415 
417 {
418  int i, j;
419 
420  for (i=0, j=0; pixelformat_tab[i].dfb != DSPF_UNKNOWN; i++)
421  if (pixelformat_tab[i].sdl != SDL_PIXELFORMAT_UNKNOWN)
422  ri->texture_formats[j++] = pixelformat_tab[i].sdl;
423  ri->num_texture_formats = j;
424 }
425 
426 #endif /* SDL_VIDEO_DRIVER_DIRECTFB */
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
Definition: SDL_sysvideo.h:169
void DirectFB_ShowWindow(_THIS, SDL_Window *window)
void(* MinimizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:195
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
Definition: SDL_sysvideo.h:215
void(* RaiseWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:193
int DirectFB_CreateWindow(_THIS, SDL_Window *window)
SDL_bool DirectFB_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
SDL_WindowShaper * DirectFB_CreateShaper(SDL_Window *window)
#define SDL_DFB_LOG(x...)
#define SDL_DFB_FREE(x)
void DirectFB_SetSupportedPixelFormats(SDL_RendererInfo *ri)
#define NULL
Definition: ftobjs.h:61
void(* HideWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:192
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
Definition: SDL_sysvideo.h:226
GLclampd n
Definition: glew.h:7287
void SDL_DirectFB_UnLoadLibrary(void)
DFBSurfacePixelFormat DirectFB_SDLToDFBPixelFormat(Uint32 format)
SDL_EventEntry * free
Definition: SDL_events.c:80
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
Definition: SDL_sysvideo.h:201
Uint32 texture_formats[16]
Definition: SDL_render.h:83
int32_t j
Definition: e_log.c:102
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
Definition: SDL_sysvideo.h:186
void DirectFB_RaiseWindow(_THIS, SDL_Window *window)
void DirectFB_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
#define DFBENV_USE_WM
EGLImageKHR EGLint * name
Definition: eglext.h:284
Uint32 DirectFB_DFBToSDLPixelFormat(DFBSurfacePixelFormat pixelformat)
int(* CreateWindowFrom)(_THIS, SDL_Window *window, const void *data)
Definition: SDL_sysvideo.h:184
void(* free)(_THIS)
Definition: SDL_sysvideo.h:327
int DirectFB_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
ret
Definition: glew_str_glx.c:2
#define SDL_DFB_RELEASE(x)
void DirectFB_QuitMouse(_THIS)
int(* GL_SetSwapInterval)(_THIS, int interval)
Definition: SDL_sysvideo.h:228
static SDL_VideoDevice * _this
Definition: SDL_video.c:92
void DirectFB_InitMouse(_THIS)
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:145
#define DFBENV_USE_LINUX_INPUT
int(* CreateWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:183
void DirectFB_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
SDL_Window * firstwin
#define DFBENV_USE_YUV_UNDERLAY
int(* SetWindowShape)(SDL_WindowShaper *shaper, SDL_Surface *shape, SDL_WindowShapeMode *shape_mode)
Definition: SDL_sysvideo.h:59
FT_Error error
Definition: cffdrivr.c:407
int(* VideoInit)(_THIS)
Definition: SDL_sysvideo.h:148
#define _THIS
void DirectFB_QuitKeyboard(_THIS)
void DirectFB_QuitModes(_THIS)
void DirectFB_InitModes(_THIS)
void DirectFB_InitKeyboard(_THIS)
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl2ext.h:845
void(* SetWindowPosition)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:187
void(* PumpEvents)(_THIS)
Definition: SDL_sysvideo.h:237
int DirectFB_SetWindowShape(SDL_WindowShaper *shaper, SDL_Surface *shape, SDL_WindowShapeMode *shapeMode)
void DirectFB_PumpEventsWindow(_THIS)
SDL_WindowShaper *(* CreateShaper)(SDL_Window *window)
Definition: SDL_sysvideo.h:58
int(* GL_GetSwapInterval)(_THIS)
Definition: SDL_sysvideo.h:229
#define DFBENV_USE_YUV_DIRECT
#define SDL_DFB_ALLOC_CLEAR(r, s)
#define SDL_DFB_CHECKERR(x...)
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
Definition: SDL_sysvideo.h:231
void(* MaximizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:194
Information on the capabilities of a render driver or context.
Definition: SDL_render.h:78
void(* DestroyWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:202
SDL_Window * grabbed_window
int DirectFB_ResizeWindowShape(SDL_Window *window)
void(* SetWindowSize)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:188
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
Definition: SDL_sysvideo.h:177
#define DFBENV_USE_X11_CHECK
void DirectFB_SetWindowTitle(_THIS, SDL_Window *window)
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:225
void DirectFB_MaximizeWindow(_THIS, SDL_Window *window)
int(* GL_LoadLibrary)(_THIS, const char *path)
Definition: SDL_sysvideo.h:222
void(* GL_SwapWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:230
void(* VideoQuit)(_THIS)
Definition: SDL_sysvideo.h:154
void(* ShowWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:191
Uint32 num_texture_formats
Definition: SDL_render.h:82
SDL_ShapeDriver shape_driver
Definition: SDL_sysvideo.h:212
void DirectFB_SetWindowSize(_THIS, SDL_Window *window)
DECLSPEC char *SDLCALL SDL_getenv(const char *name)
Definition: SDL_getenv.c:179
void(* SetWindowTitle)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:185
int i
Definition: pngrutil.c:1377
void DirectFB_MinimizeWindow(_THIS, SDL_Window *window)
void DirectFB_DestroyWindow(_THIS, SDL_Window *window)
void DirectFB_SetWindowPosition(_THIS, SDL_Window *window)
void *(* GL_GetProcAddress)(_THIS, const char *proc)
Definition: SDL_sysvideo.h:223
int DirectFB_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
void DirectFB_HideWindow(_THIS, SDL_Window *window)
int(* ResizeWindowShape)(SDL_Window *window)
Definition: SDL_sysvideo.h:60
void DirectFB_RestoreWindow(_THIS, SDL_Window *window)
void DirectFB_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
int SDL_DirectFB_LoadLibrary(void)
void(* RestoreWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:196
IDirectFBEventBuffer * events