From e5d575b93343f5f0c6f0497170d799aaaf7f0a9e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Jan 2016 21:58:49 -0800 Subject: [PATCH] Expose the EGL display and window for Vivante SDL windows --- CMakeLists.txt | 0 include/SDL_syswm.h | 22 +++++++++++++++++++++- src/video/vivante/SDL_vivantevideo.c | 6 ++---- 3 files changed, 23 insertions(+), 5 deletions(-) mode change 100755 => 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index 1056e526b..71ba5f1f3 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -106,6 +106,10 @@ typedef struct ANativeWindow ANativeWindow; typedef void *EGLSurface; #endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include "SDL_egl.h" +#endif + /** * These are the various supported windowing subsystems */ @@ -120,7 +124,8 @@ typedef enum SDL_SYSWM_WAYLAND, SDL_SYSWM_MIR, SDL_SYSWM_WINRT, - SDL_SYSWM_ANDROID + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE } SDL_SYSWM_TYPE; /** @@ -166,6 +171,13 @@ struct SDL_SysWMmsg int dummy; /* No UIKit window events yet */ } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; #endif /* Can't have an empty union */ int dummy; @@ -259,6 +271,14 @@ struct SDL_SysWMinfo } android; #endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + /* Can't have an empty union */ int dummy; } info; diff --git a/src/video/vivante/SDL_vivantevideo.c b/src/video/vivante/SDL_vivantevideo.c index fe4ea089d..cb1a2649b 100644 --- a/src/video/vivante/SDL_vivantevideo.c +++ b/src/video/vivante/SDL_vivantevideo.c @@ -366,12 +366,13 @@ VIVANTE_HideWindow(_THIS, SDL_Window * window) SDL_bool VIVANTE_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info) { -/* SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + SDL_DisplayData *displaydata = SDL_GetDisplayDriverData(0); if (info->version.major == SDL_MAJOR_VERSION && info->version.minor == SDL_MINOR_VERSION) { info->subsystem = SDL_SYSWM_VIVANTE; + info->info.vivante.display = displaydata->native_display; info->info.vivante.window = data->native_window; return SDL_TRUE; } else { @@ -379,9 +380,6 @@ VIVANTE_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info) SDL_MAJOR_VERSION, SDL_MINOR_VERSION); return SDL_FALSE; } -*/ - SDL_Unsupported(); - return SDL_FALSE; } /*****************************************************************************/