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