Go to the documentation of this file.
21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_DIRECTFB
42 #include <directfb_version.h>
43 #include <directfb_strings.h>
47 #include "../SDL_sysvideo.h"
48 #include "../SDL_pixels_c.h"
49 #include "../../events/SDL_events_c.h"
60 static int DirectFB_VideoInit(
_THIS);
61 static void DirectFB_VideoQuit(
_THIS);
63 static int DirectFB_Available(
void);
67 "directfb",
"DirectFB",
68 DirectFB_Available, DirectFB_CreateDevice
71 static const DirectFBSurfaceDrawingFlagsNames(drawing_flags);
72 static const DirectFBSurfaceBlittingFlagsNames(blitting_flags);
73 static const DirectFBAccelerationMaskNames(acceleration_mask);
78 DirectFB_Available(
void)
95 DirectFB_CreateDevice(
int devindex)
107 device->VideoInit = DirectFB_VideoInit;
108 device->VideoQuit = DirectFB_VideoQuit;
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;
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;
149 device->free = DirectFB_DeleteDevice;
159 DirectFB_DeviceInformation(IDirectFB * dfb)
161 DFBGraphicsDeviceDescription desc;
164 dfb->GetDeviceDescription(dfb, &desc);
171 SDL_DFB_LOG(
"Driver Vendor: %s", desc.driver.vendor);
172 SDL_DFB_LOG(
"Driver Version: %d.%d", desc.driver.major,
175 SDL_DFB_LOG(
"Video memory: %d", desc.video_memory);
178 for (
n = 0; blitting_flags[
n].flag;
n++) {
179 if (desc.blitting_flags & blitting_flags[
n].flag)
184 for (
n = 0; drawing_flags[
n].flag;
n++) {
185 if (desc.drawing_flags & drawing_flags[
n].flag)
191 for (
n = 0; acceleration_mask[
n].mask;
n++) {
192 if (desc.acceleration_mask & acceleration_mask[
n].mask)
199 static int readBoolEnv(
const char *env_name,
int def_val)
211 DirectFB_VideoInit(
_THIS)
213 IDirectFB *dfb =
NULL;
214 DFB_DeviceData *devdata =
NULL;
226 DirectFBSetOption(
"system",
"x11");
228 DirectFBSetOption(
"disable-module",
"x11input");
233 if (!devdata->use_linux_input)
236 DirectFBSetOption(
"disable-module",
"linux_input");
241 DirectFB_DeviceInformation(dfb);
247 if (devdata->use_linux_input) {
261 devdata->initialized = 1;
264 devdata->firstwin =
NULL;
265 devdata->grabbed_window =
NULL;
271 #if SDL_DIRECTFB_OPENGL
272 DirectFB_GL_Initialize(
_this);
288 DirectFB_VideoQuit(
_THIS)
296 devdata->events->Reset(devdata->events);
300 #if SDL_DIRECTFB_OPENGL
301 DirectFB_GL_Shutdown(
_this);
304 devdata->initialized = 0;
309 static const struct {
310 DFBSurfacePixelFormat dfb;
312 } pixelformat_tab[] =
332 #if (DFB_VERSION_ATLEAST(1,2,0))
355 #if (DFB_VERSION_ATLEAST(1,3,0))
359 #if (DFB_VERSION_ATLEAST(1,4,3))
387 for (
i=0; pixelformat_tab[
i].dfb != DSPF_UNKNOWN;
i++)
388 if (pixelformat_tab[
i].dfb == pixelformat)
390 return pixelformat_tab[
i].sdl;
395 DFBSurfacePixelFormat
400 for (
i=0; pixelformat_tab[
i].dfb != DSPF_UNKNOWN;
i++)
401 if (pixelformat_tab[
i].sdl ==
format)
403 return pixelformat_tab[
i].dfb;
412 for (
i=0,
j=0; pixelformat_tab[
i].dfb != DSPF_UNKNOWN;
i++)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
#define SDL_DFB_LOG(x...)
void DirectFB_PumpEventsWindow(_THIS)
void DirectFB_SetWindowPosition(_THIS, SDL_Window *window)
void DirectFB_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
void DirectFB_SetSupportedPixelFormats(SDL_RendererInfo *ri)
void DirectFB_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
int DirectFB_SetWindowOpacity(_THIS, SDL_Window *window, float opacity)
void SDL_DirectFB_UnLoadLibrary(void)
void DirectFB_QuitMouse(_THIS)
void DirectFB_InitMouse(_THIS)
Uint32 DirectFB_DFBToSDLPixelFormat(DFBSurfacePixelFormat pixelformat)
int DirectFB_CreateWindow(_THIS, SDL_Window *window)
void DirectFB_SetWindowSize(_THIS, SDL_Window *window)
void DirectFB_InitKeyboard(_THIS)
void DirectFB_RaiseWindow(_THIS, SDL_Window *window)
Information on the capabilities of a render driver or context.
SDL_WindowShaper * DirectFB_CreateShaper(SDL_Window *window)
static SDL_VideoDevice * _this
#define DFBENV_USE_YUV_DIRECT
int DirectFB_ResizeWindowShape(SDL_Window *window)
void DirectFB_DestroyWindow(_THIS, SDL_Window *window)
GLuint const GLchar * name
int DirectFB_SetWindowShape(SDL_WindowShaper *shaper, SDL_Surface *shape, SDL_WindowShapeMode *shapeMode)
SDL_bool DirectFB_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
#define SDL_DFB_RELEASE(x)
DFBSurfacePixelFormat DirectFB_SDLToDFBPixelFormat(Uint32 format)
#define DFBENV_USE_X11_CHECK
void DirectFB_QuitKeyboard(_THIS)
VideoBootStrap DirectFB_bootstrap
void DirectFB_RestoreWindow(_THIS, SDL_Window *window)
#define SDL_DFB_ALLOC_CLEAR(r, s)
void DirectFB_QuitModes(_THIS)
int DirectFB_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
int DirectFB_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
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)
void DirectFB_InitModes(_THIS)
void DirectFB_SetWindowTitle(_THIS, SDL_Window *window)
#define DFBENV_USE_YUV_UNDERLAY
void DirectFB_ShowWindow(_THIS, SDL_Window *window)
void DirectFB_HideWindow(_THIS, SDL_Window *window)
void DirectFB_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
#define SDL_DFB_CHECKERR(x...)
#define DFBENV_USE_LINUX_INPUT
Uint32 texture_formats[16]
int SDL_DirectFB_LoadLibrary(void)
void DirectFB_MaximizeWindow(_THIS, SDL_Window *window)
static SDL_AudioDeviceID device
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)
void DirectFB_MinimizeWindow(_THIS, SDL_Window *window)
Uint32 num_texture_formats