Skip to content
Permalink
Browse files

Report the correct desktop video mode on the iMX6

  • Loading branch information
slouken committed Sep 10, 2014
1 parent 50cc4ef commit 0e65e62367b196397c7fdbaa8b426c2480cb89c8
Showing with 32 additions and 12 deletions.
  1. +0 −2 src/video/mx6/SDL_mx6opengles.c
  2. +32 −8 src/video/mx6/SDL_mx6video.c
  3. +0 −2 src/video/mx6/SDL_mx6video.h
@@ -150,8 +150,6 @@ MX6_GLES_LoadLibrary(_THIS, const char *egl_path) {
LOAD_VIV_FUNC(fbDestroyPixmap);

displaydata = SDL_GetDisplayDriverData(0);
displaydata->native_display = egl_viv_data->fbGetDisplayByIndex(0);
egl_viv_data->fbGetDisplayGeometry(displaydata->native_display, &displaydata->width, &displaydata->height);

_this->egl_data->egl_display = _this->egl_data->eglGetDisplay(displaydata->native_display);
if (!_this->egl_data->egl_display) {
@@ -124,6 +124,36 @@ VideoBootStrap MX6_bootstrap = {
MX6_Create
};

static void
MX6_UpdateDisplay(_THIS)
{
SDL_VideoDisplay *display = &_this->displays[0];
SDL_DisplayData *data = (SDL_DisplayData*)display->driverdata;
EGLNativeDisplayType native_display = egl_viv_data->fbGetDisplayByIndex(0);
SDL_DisplayMode current_mode;
int pitch, bpp;
unsigned long pixels;

/* Store the native EGL display */
data->native_display = native_display;

SDL_zero(current_mode);
egl_viv_data->fbGetDisplayInfo(native_display, &current_mode.w, &current_mode.h, &pixels, &pitch, &bpp);
/* FIXME: How do we query refresh rate? */
current_mode.refresh_rate = 60;

switch (bpp)
{
default: /* Is another format used? */
case 16:
current_mode.format = SDL_PIXELFORMAT_RGB565;
break;
}

display->desktop_mode = current_mode;
display->current_mode = current_mode;
}

/*****************************************************************************/
/* SDL Video and Display initialization/handling functions */
/*****************************************************************************/
@@ -138,16 +168,9 @@ MX6_VideoInit(_THIS)
if (data == NULL) {
return SDL_OutOfMemory();
}

/* Actual data will be set in SDL_GL_LoadLibrary call below */
SDL_zero(current_mode);
current_mode.w = 0;
current_mode.h = 0;
current_mode.refresh_rate = 60;
current_mode.format = SDL_PIXELFORMAT_RGB565;
current_mode.driverdata = NULL;

SDL_zero(display);
SDL_zero(current_mode);
display.desktop_mode = current_mode;
display.current_mode = current_mode;
display.driverdata = data;
@@ -156,6 +179,7 @@ MX6_VideoInit(_THIS)
if (SDL_GL_LoadLibrary(NULL) < 0) {
return -1;
}
MX6_UpdateDisplay(_this);

#ifdef SDL_INPUT_LINUXEV
SDL_EVDEV_Init();
@@ -35,8 +35,6 @@ typedef struct SDL_DisplayData
{
EGLNativeDisplayType native_display;
EGLDisplay egl_display;
int width;
int height;
} SDL_DisplayData;

typedef struct SDL_WindowData

0 comments on commit 0e65e62

Please sign in to comment.