void RPI_VideoQuit(_THIS) { #ifdef SDL_INPUT_LINUXEV SDL_EVDEV_Quit(); #endif }
int SDL_EVDEV_Init(void) { int retval = 0; if (_this == NULL) { _this = (SDL_EVDEV_PrivateData *) SDL_calloc(1, sizeof(*_this)); if(_this == NULL) { return SDL_OutOfMemory(); } #if SDL_USE_LIBUDEV if (SDL_UDEV_Init() < 0) { SDL_free(_this); _this = NULL; return -1; } /* Set up the udev callback */ if ( SDL_UDEV_AddCallback(SDL_EVDEV_udev_callback) < 0) { SDL_EVDEV_Quit(); return -1; } /* Force a scan to build the initial device list */ SDL_UDEV_Scan(); #else /* TODO: Scan the devices manually, like a caveman */ #endif /* SDL_USE_LIBUDEV */ /* We need a physical terminal (not PTS) to be able to translate key code to symbols via the kernel tables */ _this->console_fd = SDL_EVDEV_get_console_fd(); /* Mute the keyboard so keystrokes only generate evdev events and do not leak through to the console */ _this->tty = STDIN_FILENO; if (SDL_EVDEV_mute_keyboard(_this->tty, &_this->kb_mode) < 0) { /* stdin is not a tty, probably we were launched remotely, so we try to disable the active tty */ _this->tty = SDL_EVDEV_get_active_tty(); if (_this->tty >= 0) { if (SDL_EVDEV_mute_keyboard(_this->tty, &_this->kb_mode) < 0) { close(_this->tty); _this->tty = -1; } } } } _this->ref_count += 1; return retval; }
void VIVANTE_VideoQuit(_THIS) { SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata; #ifdef SDL_INPUT_LINUXEV SDL_EVDEV_Quit(); #endif VIVANTE_CleanupPlatform(_this); #if SDL_VIDEO_DRIVER_VIVANTE_VDK if (videodata->vdk_private) { vdkExit(videodata->vdk_private); videodata->vdk_private = NULL; } #else if (videodata->egl_handle) { SDL_UnloadObject(videodata->egl_handle); videodata->egl_handle = NULL; } #endif }
void KMSDRM_VideoQuit(_THIS) { SDL_VideoData *vdata = ((SDL_VideoData *)_this->driverdata); SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "KMSDRM_VideoQuit()"); if (_this->gl_config.driver_loaded) { SDL_GL_UnloadLibrary(); } if(vdata->saved_crtc != NULL) { if(vdata->drm_fd > 0 && vdata->saved_conn_id > 0) { /* Restore saved CRTC settings */ drmModeCrtc *crtc = vdata->saved_crtc; if(KMSDRM_drmModeSetCrtc(vdata->drm_fd, crtc->crtc_id, crtc->buffer_id, crtc->x, crtc->y, &vdata->saved_conn_id, 1, &crtc->mode) != 0) { SDL_LogWarn(SDL_LOG_CATEGORY_VIDEO, "Could not restore original CRTC mode"); } } KMSDRM_drmModeFreeCrtc(vdata->saved_crtc); vdata->saved_crtc = NULL; } if (vdata->gbm != NULL) { KMSDRM_gbm_device_destroy(vdata->gbm); vdata->gbm = NULL; } if (vdata->drm_fd >= 0) { close(vdata->drm_fd); SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "Closed DRM FD %d", vdata->drm_fd); vdata->drm_fd = -1; } #ifdef SDL_INPUT_LINUXEV SDL_EVDEV_Quit(); #endif }