mirror of https://github.com/encounter/SDL.git
Added a way to get the native Android window and EGL context
This commit is contained in:
parent
3905b910f3
commit
32665131f6
|
@ -98,6 +98,11 @@ typedef struct _UIViewController UIViewController;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(SDL_VIDEO_DRIVER_ANDROID)
|
||||||
|
typedef struct ANativeWindow ANativeWindow;
|
||||||
|
typedef void *EGLSurface;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These are the various supported windowing subsystems
|
* These are the various supported windowing subsystems
|
||||||
*/
|
*/
|
||||||
|
@ -111,7 +116,8 @@ typedef enum
|
||||||
SDL_SYSWM_UIKIT,
|
SDL_SYSWM_UIKIT,
|
||||||
SDL_SYSWM_WAYLAND,
|
SDL_SYSWM_WAYLAND,
|
||||||
SDL_SYSWM_MIR,
|
SDL_SYSWM_MIR,
|
||||||
SDL_SYSWM_WINRT
|
SDL_SYSWM_WINRT,
|
||||||
|
SDL_SYSWM_ANDROID
|
||||||
} SDL_SYSWM_TYPE;
|
} SDL_SYSWM_TYPE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,6 +231,14 @@ struct SDL_SysWMinfo
|
||||||
} mir;
|
} mir;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(SDL_VIDEO_DRIVER_ANDROID)
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
ANativeWindow *window;
|
||||||
|
EGLSurface surface;
|
||||||
|
} android;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Can't have an empty union */
|
/* Can't have an empty union */
|
||||||
int dummy;
|
int dummy;
|
||||||
} info;
|
} info;
|
||||||
|
|
|
@ -111,6 +111,7 @@ Android_CreateDevice(int devindex)
|
||||||
device->CreateWindow = Android_CreateWindow;
|
device->CreateWindow = Android_CreateWindow;
|
||||||
device->SetWindowTitle = Android_SetWindowTitle;
|
device->SetWindowTitle = Android_SetWindowTitle;
|
||||||
device->DestroyWindow = Android_DestroyWindow;
|
device->DestroyWindow = Android_DestroyWindow;
|
||||||
|
device->GetWindowWMInfo = Android_GetWindowWMInfo;
|
||||||
|
|
||||||
device->free = Android_DeleteDevice;
|
device->free = Android_DeleteDevice;
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ Android_DestroyWindow(_THIS, SDL_Window * window)
|
||||||
if (data->egl_surface != EGL_NO_SURFACE) {
|
if (data->egl_surface != EGL_NO_SURFACE) {
|
||||||
SDL_EGL_DestroySurface(_this, data->egl_surface);
|
SDL_EGL_DestroySurface(_this, data->egl_surface);
|
||||||
}
|
}
|
||||||
if(data->native_window) {
|
if (data->native_window) {
|
||||||
ANativeWindow_release(data->native_window);
|
ANativeWindow_release(data->native_window);
|
||||||
}
|
}
|
||||||
SDL_free(window->driverdata);
|
SDL_free(window->driverdata);
|
||||||
|
@ -115,6 +115,24 @@ Android_DestroyWindow(_THIS, SDL_Window * window)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_bool
|
||||||
|
Android_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
|
||||||
|
{
|
||||||
|
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||||
|
|
||||||
|
if (info->version.major == SDL_MAJOR_VERSION &&
|
||||||
|
info->version.minor == SDL_MINOR_VERSION) {
|
||||||
|
info->subsystem = SDL_SYSWM_ANDROID;
|
||||||
|
info->info.android.window = data->native_window;
|
||||||
|
info->info.android.surface = data->egl_surface;
|
||||||
|
return SDL_TRUE;
|
||||||
|
} else {
|
||||||
|
SDL_SetError("Application not compiled with SDL %d.%d\n",
|
||||||
|
SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_DRIVER_ANDROID */
|
#endif /* SDL_VIDEO_DRIVER_ANDROID */
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
extern int Android_CreateWindow(_THIS, SDL_Window * window);
|
extern int Android_CreateWindow(_THIS, SDL_Window * window);
|
||||||
extern void Android_SetWindowTitle(_THIS, SDL_Window * window);
|
extern void Android_SetWindowTitle(_THIS, SDL_Window * window);
|
||||||
extern void Android_DestroyWindow(_THIS, SDL_Window * window);
|
extern void Android_DestroyWindow(_THIS, SDL_Window * window);
|
||||||
|
extern SDL_bool Android_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info);
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue