21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_VIVANTE 26 #include "../SDL_sysvideo.h" 31 #include "../../events/SDL_events_c.h" 33 #ifdef SDL_INPUT_LINUXEV 34 #include "../../core/linux/SDL_evdev.h" 43 VIVANTE_Available(
void)
84 device->
free = VIVANTE_Destroy;
100 #if SDL_VIDEO_OPENGL_EGL 119 "Vivante EGL Video Driver",
129 VIVANTE_AddVideoDisplays(
_THIS)
135 int pitch = 0, bpp = 0;
144 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 147 vdkGetDisplayInfo(data->
native_display, ¤t_mode.
w, ¤t_mode.
h, &pixels, &pitch, &bpp);
151 videodata->fbGetDisplayInfo(data->
native_display, ¤t_mode.
w, ¤t_mode.
h, &pixels, &pitch, &bpp);
168 display.
name = VIVANTE_GetDisplayName(
_this);
181 #
if SDL_VIDEO_DRIVER_VIVANTE_VDK
182 videodata->vdk_private = vdkInitialize();
183 if (!videodata->vdk_private) {
194 #define LOAD_FUNC(NAME) \ 195 videodata->NAME = SDL_LoadFunction(videodata->egl_handle, #NAME); \ 196 if (!videodata->NAME) return -1; 198 LOAD_FUNC(fbGetDisplay);
199 LOAD_FUNC(fbGetDisplayByIndex);
200 LOAD_FUNC(fbGetDisplayGeometry);
201 LOAD_FUNC(fbGetDisplayInfo);
202 LOAD_FUNC(fbDestroyDisplay);
203 LOAD_FUNC(fbCreateWindow);
204 LOAD_FUNC(fbGetWindowGeometry);
205 LOAD_FUNC(fbGetWindowInfo);
206 LOAD_FUNC(fbDestroyWindow);
209 if (VIVANTE_SetupPlatform(
_this) < 0) {
213 if (VIVANTE_AddVideoDisplays(
_this) < 0) {
217 VIVANTE_UpdateDisplayScale(
_this);
219 #ifdef SDL_INPUT_LINUXEV 220 if (SDL_EVDEV_Init() < 0) {
237 VIVANTE_CleanupPlatform(
_this);
239 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 240 if (videodata->vdk_private) {
241 vdkExit(videodata->vdk_private);
242 videodata->vdk_private =
NULL;
283 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 284 data->native_window = vdkCreateWindow(displaydata->native_display, window->
x, window->
y, window->
w, window->
h);
286 data->native_window = videodata->fbCreateWindow(displaydata->native_display, window->
x, window->
y, window->
w, window->
h);
288 if (!data->native_window) {
289 return SDL_SetError(
"VIVANTE: Can't create native window");
292 #if SDL_VIDEO_OPENGL_EGL 294 data->egl_surface = SDL_EGL_CreateSurface(
_this, data->native_window);
296 return SDL_SetError(
"VIVANTE: Can't create EGL surface");
315 #if SDL_VIDEO_OPENGL_EGL 317 SDL_EGL_DestroySurface(
_this, data->egl_surface);
321 if (data->native_window) {
322 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 323 vdkDestroyWindow(data->native_window);
325 videodata->fbDestroyWindow(data->native_window);
337 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 358 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 369 #if SDL_VIDEO_DRIVER_VIVANTE_VDK 387 info->
info.vivante.
display = displaydata->native_display;
402 #ifdef SDL_INPUT_LINUXEV
#define SDL_MINOR_VERSION
void VIVANTE_SetWindowTitle(_THIS, SDL_Window *window)
void VIVANTE_SetWindowPosition(_THIS, SDL_Window *window)
int VIVANTE_VideoInit(_THIS)
void SDL_SetKeyboardFocus(SDL_Window *window)
#define SDL_MAJOR_VERSION
void VIVANTE_ShowWindow(_THIS, SDL_Window *window)
void VIVANTE_PumpEvents(_THIS)
int(* GL_SetSwapInterval)(_THIS, int interval)
void(* ShowWindow)(_THIS, SDL_Window *window)
The structure that defines a display mode.
int VIVANTE_CreateWindow(_THIS, SDL_Window *window)
void(* SetWindowSize)(_THIS, SDL_Window *window)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
void SDL_SetMouseFocus(SDL_Window *window)
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
int(* GL_LoadLibrary)(_THIS, const char *path)
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
void * SDL_GetDisplayDriverData(int displayIndex)
static SDL_VideoDevice * _this
void(* HideWindow)(_THIS, SDL_Window *window)
static SDL_AudioDeviceID device
VideoBootStrap VIVANTE_bootstrap
#define SDL_INPUT_LINUXEV
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
int VIVANTE_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
SDL_DisplayMode current_mode
void(* DestroyWindow)(_THIS, SDL_Window *window)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
SDL_bool VIVANTE_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
void(* GL_UnloadLibrary)(_THIS)
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
int(* CreateSDLWindow)(_THIS, SDL_Window *window)
#define SDL_OutOfMemory()
SDL_DisplayMode desktop_mode
EGLSurface EGLNativeWindowType * window
void(* SetWindowPosition)(_THIS, SDL_Window *window)
void VIVANTE_SetWindowSize(_THIS, SDL_Window *window)
void VIVANTE_DestroyWindow(_THIS, SDL_Window *window)
int(* GL_SwapWindow)(_THIS, SDL_Window *window)
The type used to identify a window.
void VIVANTE_VideoQuit(_THIS)
SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
union SDL_SysWMinfo::@18 info
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
void(* SetWindowTitle)(_THIS, SDL_Window *window)
int(* GL_GetSwapInterval)(_THIS)
ANativeWindow * native_window
void *(* GL_GetProcAddress)(_THIS, const char *proc)
EGLNativeDisplayType native_display
void(* PumpEvents)(_THIS)
void VIVANTE_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
void VIVANTE_HideWindow(_THIS, SDL_Window *window)