| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> |
| | | Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> |
| | | |
| | | This software is provided 'as-is', without any express or implied |
| | | warranty. In no event will the authors be held liable for any damages |
| | |
| | | device->VideoQuit = VIVANTE_VideoQuit; |
| | | device->GetDisplayModes = VIVANTE_GetDisplayModes; |
| | | device->SetDisplayMode = VIVANTE_SetDisplayMode; |
| | | device->CreateWindow = VIVANTE_CreateWindow; |
| | | device->CreateSDLWindow = VIVANTE_CreateWindow; |
| | | device->SetWindowTitle = VIVANTE_SetWindowTitle; |
| | | device->SetWindowPosition = VIVANTE_SetWindowPosition; |
| | | device->SetWindowSize = VIVANTE_SetWindowSize; |
| | |
| | | device->DestroyWindow = VIVANTE_DestroyWindow; |
| | | device->GetWindowWMInfo = VIVANTE_GetWindowWMInfo; |
| | | |
| | | #if SDL_VIDEO_OPENGL_EGL |
| | | device->GL_LoadLibrary = VIVANTE_GLES_LoadLibrary; |
| | | device->GL_GetProcAddress = VIVANTE_GLES_GetProcAddress; |
| | | device->GL_UnloadLibrary = VIVANTE_GLES_UnloadLibrary; |
| | |
| | | device->GL_GetSwapInterval = VIVANTE_GLES_GetSwapInterval; |
| | | device->GL_SwapWindow = VIVANTE_GLES_SwapWindow; |
| | | device->GL_DeleteContext = VIVANTE_GLES_DeleteContext; |
| | | #endif |
| | | |
| | | device->PumpEvents = VIVANTE_PumpEvents; |
| | | |
| | |
| | | switch (bpp) |
| | | { |
| | | default: /* Is another format used? */ |
| | | case 32: |
| | | current_mode.format = SDL_PIXELFORMAT_ARGB8888; |
| | | break; |
| | | case 16: |
| | | current_mode.format = SDL_PIXELFORMAT_RGB565; |
| | | break; |
| | |
| | | current_mode.refresh_rate = 60; |
| | | |
| | | SDL_zero(display); |
| | | display.name = VIVANTE_GetDisplayName(_this); |
| | | display.desktop_mode = current_mode; |
| | | display.current_mode = current_mode; |
| | | display.driverdata = data; |
| | |
| | | if (VIVANTE_AddVideoDisplays(_this) < 0) { |
| | | return -1; |
| | | } |
| | | |
| | | VIVANTE_UpdateDisplayScale(_this); |
| | | |
| | | #ifdef SDL_INPUT_LINUXEV |
| | | if (SDL_EVDEV_Init() < 0) { |
| | |
| | | return SDL_SetError("VIVANTE: Can't create native window"); |
| | | } |
| | | |
| | | #if SDL_VIDEO_OPENGL_EGL |
| | | if (window->flags & SDL_WINDOW_OPENGL) { |
| | | data->egl_surface = SDL_EGL_CreateSurface(_this, data->native_window); |
| | | if (data->egl_surface == EGL_NO_SURFACE) { |
| | |
| | | } else { |
| | | data->egl_surface = EGL_NO_SURFACE; |
| | | } |
| | | #endif |
| | | |
| | | /* Window has been successfully created */ |
| | | return 0; |
| | |
| | | |
| | | data = window->driverdata; |
| | | if (data) { |
| | | #if SDL_VIDEO_OPENGL_EGL |
| | | if (data->egl_surface != EGL_NO_SURFACE) { |
| | | SDL_EGL_DestroySurface(_this, data->egl_surface); |
| | | } |
| | | #endif |
| | | |
| | | if (data->native_window) { |
| | | #if SDL_VIDEO_DRIVER_VIVANTE_VDK |
| | |
| | | info->info.vivante.window = data->native_window; |
| | | return SDL_TRUE; |
| | | } else { |
| | | SDL_SetError("Application not compiled with SDL %d.%d\n", |
| | | SDL_SetError("Application not compiled with SDL %d.%d", |
| | | SDL_MAJOR_VERSION, SDL_MINOR_VERSION); |
| | | return SDL_FALSE; |
| | | } |