22 #include "../../SDL_internal.h" 24 #if SDL_VIDEO_DRIVER_RPI 34 #include "../SDL_sysvideo.h" 39 #include "../../events/SDL_mouse_c.h" 40 #include "../../events/SDL_keyboard_c.h" 43 #ifdef SDL_INPUT_LINUXEV 44 #include "../../core/linux/SDL_evdev.h" 93 device->
free = RPI_Destroy;
156 if (graphics_get_display_size( 0, &w, &h) < 0) {
185 #ifdef SDL_INPUT_LINUXEV 186 if (SDL_EVDEV_Init() < 0) {
199 #ifdef SDL_INPUT_LINUXEV 225 VC_DISPMANX_ALPHA_T dispman_alpha;
226 DISPMANX_UPDATE_HANDLE_T dispman_update;
231 dispman_alpha.flags = DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS;
232 dispman_alpha.opacity = 0xFF;
233 dispman_alpha.mask = 0;
253 dst_rect.width = window->
w;
254 dst_rect.height = window->
h;
258 src_rect.width = window->
w << 16;
259 src_rect.height = window->
h << 16;
266 dispman_update = vc_dispmanx_update_start( 0 );
267 wdata->
dispman_window.element = vc_dispmanx_element_add (dispman_update,
273 DISPMANX_PROTECTION_NONE,
279 vc_dispmanx_update_submit_sync(dispman_update);
281 if (!
_this->egl_data) {
289 return SDL_SetError(
"Could not create GLES window surface");
308 #if SDL_VIDEO_OPENGL_EGL #define SDL_RPI_VIDEOLAYER
#define SDL_MINOR_VERSION
void RPI_DestroyWindow(_THIS, SDL_Window *window)
void RPI_RestoreWindow(_THIS, SDL_Window *window)
void(* RestoreWindow)(_THIS, SDL_Window *window)
void * RPI_GLES_GetProcAddress(_THIS, const char *proc)
void SDL_SetKeyboardFocus(SDL_Window *window)
int RPI_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
void RPI_SetWindowTitle(_THIS, SDL_Window *window)
void RPI_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
int RPI_GLES_LoadLibrary(_THIS, const char *path)
#define SDL_MAJOR_VERSION
GLfloat GLfloat GLfloat GLfloat h
void RPI_GLES_UnloadLibrary(_THIS)
void RPI_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
A collection of pixels used in software blitting.
int(* GL_SetSwapInterval)(_THIS, int interval)
int RPI_GLES_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context)
void(* ShowWindow)(_THIS, SDL_Window *window)
The structure that defines a display mode.
void(* SetWindowSize)(_THIS, SDL_Window *window)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
void RPI_RaiseWindow(_THIS, SDL_Window *window)
GLenum GLuint GLint GLint layer
int RPI_GLES_GetSwapInterval(_THIS)
void RPI_MaximizeWindow(_THIS, SDL_Window *window)
void SDL_SetMouseFocus(SDL_Window *window)
#define SDL_GL_LoadLibrary
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
int(* GL_LoadLibrary)(_THIS, const char *path)
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
void RPI_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
static SDL_VideoDevice * _this
void(* HideWindow)(_THIS, SDL_Window *window)
static SDL_AudioDeviceID device
void(* RaiseWindow)(_THIS, SDL_Window *window)
void * SDL_calloc(size_t nmemb, size_t size)
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
void RPI_PumpEvents(_THIS)
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
EGL_DISPMANX_WINDOW_T dispman_window
void RPI_HideWindow(_THIS, SDL_Window *window)
void RPI_SetWindowSize(_THIS, SDL_Window *window)
SDL_DisplayMode current_mode
GLubyte GLubyte GLubyte GLubyte w
void(* DestroyWindow)(_THIS, SDL_Window *window)
void RPI_GLES_DeleteContext(_THIS, SDL_GLContext context)
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
DISPMANX_DISPLAY_HANDLE_T dispman_display
void RPI_VideoQuit(_THIS)
void(* GL_UnloadLibrary)(_THIS)
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
VideoBootStrap RPI_bootstrap
int(* CreateSDLWindow)(_THIS, SDL_Window *window)
#define SDL_OutOfMemory()
SDL_DisplayMode desktop_mode
void RPI_ShowWindow(_THIS, SDL_Window *window)
void RPI_MinimizeWindow(_THIS, SDL_Window *window)
#define SDL_HINT_RPI_VIDEO_LAYER
Tell SDL which Dispmanx layer to use on a Raspberry PI.
int RPI_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
EGLSurface EGLNativeWindowType * window
void(* SetWindowPosition)(_THIS, SDL_Window *window)
int(* GL_SwapWindow)(_THIS, SDL_Window *window)
The type used to identify a window.
SDL_GLContext RPI_GLES_CreateContext(_THIS, SDL_Window *window)
void(* MinimizeWindow)(_THIS, SDL_Window *window)
int RPI_CreateWindow(_THIS, SDL_Window *window)
SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
int(* CreateSDLWindowFrom)(_THIS, SDL_Window *window, const void *data)
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
void(* GL_DefaultProfileConfig)(_THIS, int *mask, int *major, int *minor)
void(* SetWindowTitle)(_THIS, SDL_Window *window)
int(* GL_GetSwapInterval)(_THIS)
void(* MaximizeWindow)(_THIS, SDL_Window *window)
SDL_bool RPI_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
void RPI_SetWindowPosition(_THIS, SDL_Window *window)
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
void RPI_InitMouse(_THIS)
int RPI_GLES_SwapWindow(_THIS, SDL_Window *window)
void *(* GL_GetProcAddress)(_THIS, const char *proc)
void(* PumpEvents)(_THIS)
int RPI_GLES_SetSwapInterval(_THIS, int interval)