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