|
@@ -48,6 +48,7 @@ static void
|
|
|
MX6_Destroy(SDL_VideoDevice * device)
|
|
|
{
|
|
|
if (device->driverdata != NULL) {
|
|
|
+ SDL_free(device->driverdata);
|
|
|
device->driverdata = NULL;
|
|
|
}
|
|
|
}
|
|
@@ -56,7 +57,7 @@ static SDL_VideoDevice *
|
|
|
MX6_Create()
|
|
|
{
|
|
|
SDL_VideoDevice *device;
|
|
|
- SDL_VideoData *phdata;
|
|
|
+ SDL_VideoData *data;
|
|
|
|
|
|
/* Initialize SDL_VideoDevice structure */
|
|
|
device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
|
|
@@ -66,14 +67,14 @@ MX6_Create()
|
|
|
}
|
|
|
|
|
|
/* Initialize internal data */
|
|
|
- phdata = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
|
|
|
- if (phdata == NULL) {
|
|
|
+ data = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
|
|
|
+ if (data == NULL) {
|
|
|
SDL_OutOfMemory();
|
|
|
SDL_free(device);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- device->driverdata = phdata;
|
|
|
+ device->driverdata = data;
|
|
|
|
|
|
/* Setup amount of available displays and current display */
|
|
|
device->num_displays = 0;
|
|
@@ -185,7 +186,7 @@ MX6_VideoInit(_THIS)
|
|
|
SDL_EVDEV_Init();
|
|
|
#endif
|
|
|
|
|
|
- return 1;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
void
|
|
@@ -213,31 +214,31 @@ int
|
|
|
MX6_CreateWindow(_THIS, SDL_Window * window)
|
|
|
{
|
|
|
SDL_DisplayData *displaydata;
|
|
|
- SDL_WindowData *wdata;
|
|
|
+ SDL_WindowData *data;
|
|
|
|
|
|
displaydata = SDL_GetDisplayDriverData(0);
|
|
|
|
|
|
/* Allocate window internal data */
|
|
|
- wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
|
|
|
- if (wdata == NULL) {
|
|
|
+ data = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
|
|
|
+ if (data == NULL) {
|
|
|
return SDL_OutOfMemory();
|
|
|
}
|
|
|
|
|
|
/* Setup driver data for this window */
|
|
|
- window->driverdata = wdata;
|
|
|
+ window->driverdata = data;
|
|
|
window->flags |= SDL_WINDOW_OPENGL;
|
|
|
|
|
|
if (!_this->egl_data) {
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- wdata->native_window = egl_viv_data->fbCreateWindow(displaydata->native_display, window->x, window->y, window->w, window->h);
|
|
|
- if (!wdata->native_window) {
|
|
|
+ data->native_window = egl_viv_data->fbCreateWindow(displaydata->native_display, window->x, window->y, window->w, window->h);
|
|
|
+ if (!data->native_window) {
|
|
|
return SDL_SetError("MX6: Can't create native window");
|
|
|
}
|
|
|
|
|
|
- wdata->egl_surface = SDL_EGL_CreateSurface(_this, wdata->native_window);
|
|
|
- if (wdata->egl_surface == EGL_NO_SURFACE) {
|
|
|
+ data->egl_surface = SDL_EGL_CreateSurface(_this, data->native_window);
|
|
|
+ if (data->egl_surface == EGL_NO_SURFACE) {
|
|
|
return SDL_SetError("MX6: Can't create EGL surface");
|
|
|
}
|
|
|
|
|
@@ -248,22 +249,27 @@ MX6_CreateWindow(_THIS, SDL_Window * window)
|
|
|
void
|
|
|
MX6_DestroyWindow(_THIS, SDL_Window * window)
|
|
|
{
|
|
|
- SDL_WindowData *wdata;
|
|
|
+ SDL_WindowData *data;
|
|
|
|
|
|
- wdata = window->driverdata;
|
|
|
- if (wdata) {
|
|
|
- SDL_EGL_DestroySurface(_this, wdata->egl_surface);
|
|
|
- }
|
|
|
+ data = window->driverdata;
|
|
|
+ if (data) {
|
|
|
+ if (data->egl_surface != EGL_NO_SURFACE) {
|
|
|
+ SDL_EGL_DestroySurface(_this, data->egl_surface);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data->native_window) {
|
|
|
+ egl_viv_data->fbDestroyWindow(data->native_window);
|
|
|
+ }
|
|
|
|
|
|
- if (egl_viv_data) {
|
|
|
- egl_viv_data->fbDestroyWindow(wdata->native_window);
|
|
|
+ SDL_free(data);
|
|
|
}
|
|
|
+ window->driverdata = NULL;
|
|
|
}
|
|
|
|
|
|
int
|
|
|
MX6_CreateWindowFrom(_THIS, SDL_Window * window, const void *data)
|
|
|
{
|
|
|
- return -1;
|
|
|
+ return SDL_Unsupported();
|
|
|
}
|
|
|
|
|
|
void
|