Compare commits

...
Sign in to create a new pull request.

3 commits

Author SHA1 Message Date
Jools Wills
b5e5778aab mali-fbdev support / debian package changes
* mali-fbdev support from https://github.com/mihailescu2m/libsdl2-2.0.2-dfsg1 with changes for newer SDL
2019-02-07 20:16:12 +00:00
Jools Wills
3de856fc76 Revert "Linux joystick: Look at entire axis namespace for controls (thanks, "spaz16"!)."
This reverts commit 4cb7923f25.

see https://github.com/RetroPie/RetroPie-Setup/issues/1297
2019-02-07 20:16:12 +00:00
Jools Wills
8b464c159c silence log output for unknown input 2019-02-07 20:16:12 +00:00
18 changed files with 627 additions and 12 deletions

View file

@ -339,6 +339,7 @@ set_option(VIDEO_COCOA "Use Cocoa video driver" ${APPLE})
set_option(DIRECTX "Use DirectX for Windows audio/video" ${WINDOWS})
set_option(WASAPI "Use the Windows WASAPI audio driver" ${WINDOWS})
set_option(RENDER_D3D "Enable the Direct3D render driver" ${WINDOWS})
set_option(VIDEO_MALI "Use Mali EGL video driver" ${UNIX_SYS})
set_option(VIDEO_VIVANTE "Use Vivante EGL video driver" ${UNIX_SYS})
dep_option(VIDEO_VULKAN "Enable Vulkan support" ON "ANDROID OR APPLE OR LINUX OR WINDOWS" OFF)
set_option(VIDEO_KMSDRM "Use KMS DRM video driver" ${UNIX_SYS})
@ -1004,6 +1005,7 @@ elseif(UNIX AND NOT APPLE AND NOT ANDROID)
CheckWayland()
CheckVivante()
CheckKMSDRM()
CheckMali()
endif()
if(UNIX)

View file

@ -778,6 +778,29 @@ macro(CheckVivante)
endif(VIDEO_VIVANTE)
endmacro(CheckVivante)
# Requires:
# - n/a
macro(CheckMali)
if(VIDEO_MALI)
check_c_source_compiles("
#define LINUX
#define EGL_API_FB
#include <EGL/egl.h>
int main(int argc, char** argv) {}" HAVE_VIDEO_MALI_EGL_FB)
if(HAVE_VIDEO_MALI_EGL_FB)
set(HAVE_VIDEO_MALI TRUE)
set(HAVE_SDL_VIDEO TRUE)
file(GLOB MALI_SOURCES ${SDL2_SOURCE_DIR}/src/video/mali-fbdev/*.c)
set(SOURCE_FILES ${SOURCE_FILES} ${MALI_SOURCES})
set(SDL_VIDEO_DRIVER_MALI 1)
set(SDL_CFLAGS "${SDL_CFLAGS} -DLINUX -DEGL_API_FB")
list(APPEND EXTRA_LIBS EGL)
endif(HAVE_VIDEO_MALI_EGL_MALI)
endif(VIDEO_MALI)
endmacro(CheckMali)
# Requires:
# - nada
macro(CheckOpenGLX11)

53
configure vendored
View file

@ -846,6 +846,7 @@ enable_video_x11_scrnsaver
enable_video_x11_xshape
enable_video_x11_vm
enable_video_vivante
enable_video_mali
enable_video_cocoa
enable_render_metal
enable_video_directfb
@ -1598,6 +1599,7 @@ Optional Features:
enable X11 XShape support [[default=yes]]
--enable-video-x11-vm use X11 VM extension for fullscreen [[default=yes]]
--enable-video-vivante use Vivante EGL video driver [[default=yes]]
--enable-video-mali use Mali EGL video driver [[default=yes]]
--enable-video-cocoa use Cocoa video driver [[default=yes]]
--enable-render-metal enable the Metal render driver [[default=yes]]
--enable-video-directfb use DirectFB video driver [[default=no]]
@ -21229,6 +21231,56 @@ $as_echo "#define SDL_VIDEO_DRIVER_VIVANTE_VDK 1" >>confdefs.h
fi
}
CheckMaliVideo()
{
# Check whether --enable-video-mali was given.
if test "${enable_video_mali+set}" = set; then :
enableval=$enable_video_mali;
else
enable_video_mali=yes
fi
if test x$enable_video = xyes -a x$enable_video_mali = xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mali FB API" >&5
$as_echo_n "checking for Mali FB API... " >&6; }
have_mali_egl=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define LINUX
#define EGL_API_FB
#include <EGL/egl.h>
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
have_mali_egl=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mali_egl" >&5
$as_echo "$have_mali_egl" >&6; }
if test x$have_mali_egl = xyes; then
$as_echo "#define SDL_VIDEO_DRIVER_MALI 1" >>confdefs.h
EXTRA_CFLAGS="$EXTRA_CFLAGS -DLINUX -DEGL_API_FB"
SOURCES="$SOURCES $srcdir/src/video/mali-fbdev/*.c"
SUMMARY_video="${SUMMARY_video} mali"
have_video=yes
fi
fi
}
CheckHaikuVideo()
{
if test x$enable_video = xyes; then
@ -24072,6 +24124,7 @@ case "$host" in
CheckLinuxVersion
CheckRPATH
CheckVivanteVideo
CheckMaliVideo
# Set up files for the audio library
if test x$enable_audio = xyes; then

View file

@ -2037,6 +2037,35 @@ AC_HELP_STRING([--enable-video-vivante], [use Vivante EGL video driver [[default
fi
}
dnl Set up the Mali video driver if enabled
CheckMaliVideo()
{
AC_ARG_ENABLE(video-mali,
AC_HELP_STRING([--enable-video-mali], [use Mali EGL video driver [[default=yes]]]),
, enable_video_mali=yes)
if test x$enable_video = xyes -a x$enable_video_mali = xyes; then
AC_MSG_CHECKING(for Mali FB API)
have_mali_egl=no
AC_TRY_COMPILE([
#define LINUX
#define EGL_API_FB
#include <EGL/egl.h>
],[
],[
have_mali_egl=yes
])
AC_MSG_RESULT($have_mali_egl)
if test x$have_mali_egl = xyes; then
AC_DEFINE(SDL_VIDEO_DRIVER_MALI, 1, [ ])
EXTRA_CFLAGS="$EXTRA_CFLAGS -DLINUX -DEGL_API_FB"
SOURCES="$SOURCES $srcdir/src/video/mali-fbdev/*.c"
SUMMARY_video="${SUMMARY_video} mali"
have_video=yes
fi
fi
}
dnl Set up the Haiku video driver if enabled
CheckHaikuVideo()
{
@ -3446,6 +3475,7 @@ case "$host" in
CheckLinuxVersion
CheckRPATH
CheckVivanteVideo
CheckMaliVideo
# Set up files for the audio library
if test x$enable_audio = xyes; then

17
debian/control vendored
View file

@ -13,8 +13,6 @@ Build-Depends: debhelper (>= 9),
dpkg-dev (>= 1.16.1~),
fcitx-libs-dev [linux-any],
libasound2-dev [linux-any],
libgl1-mesa-dev,
libpulse-dev,
libudev-dev [linux-any],
libdbus-1-dev [linux-any],
libibus-1.0-dev[linux-any],
@ -30,16 +28,16 @@ Build-Depends: debhelper (>= 9),
libxxf86vm-dev
Homepage: http://www.libsdl.org/
Package: libsdl2
Package: libsdl2-2.0-0
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends},
${shlibs:Depends},
libudev0 [linux-any],
libudev0 | libudev1 [linux-any],
libdbus-1-3 [linux-any]
Conflicts: libsdl-1.3-0
Replaces: libsdl-1.3-0
Conflicts: libsdl-1.3-0, libsdl2
Replaces: libsdl-1.3-0, libsdl2
Description: Simple DirectMedia Layer
SDL is a library that allows programs portable low level access to
a video framebuffer, audio output, mouse, and keyboard.
@ -51,9 +49,10 @@ Section: libdevel
Architecture: any
Multi-Arch: same
Depends: ${misc:Depends},
libsdl2 (= ${binary:Version}),
libsdl2-2.0-0 (= ${binary:Version}),
libc6-dev,
libgl1-mesa-dev
libgl1-mesa-dev,
libx11-dev
Conflicts: libsdl-1.3-dev
Replaces: libsdl-1.3-dev
Description: Simple DirectMedia Layer development files
@ -68,7 +67,7 @@ Section: debug
Architecture: any
Multi-Arch: same
Depends: ${misc:Depends},
libsdl2 (= ${binary:Version}),
libsdl2-2.0-0 (= ${binary:Version}),
Description: Simple DirectMedia Layer debug files
SDL is a library that allows programs portable low level access to a video
framebuffer, audio output, mouse, and keyboard.

4
debian/rules vendored
View file

@ -6,7 +6,9 @@ DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
confflags = --disable-rpath --disable-video-directfb \
--disable-nas --disable-esd --disable-arts \
--disable-alsa-shared --disable-pulseaudio-shared \
--disable-x11-shared
--disable-x11-shared --disable-video-opengl --enable-video-opengles --enable-video-mali \
--disable-esd --disable-pulseaudio \
--disable-input-tslib
%:
dh $@ --parallel

View file

@ -328,6 +328,7 @@
#cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@
#cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@
#cmakedefine SDL_VIDEO_DRIVER_VIVANTE_VDK @SDL_VIDEO_DRIVER_VIVANTE_VDK@
#cmakedefine SDL_VIDEO_DRIVER_MALI @SDL_VIDEO_DRIVER_MALI@
#cmakedefine SDL_VIDEO_DRIVER_KMSDRM @SDL_VIDEO_DRIVER_KMSDRM@
#cmakedefine SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC @SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC@

View file

@ -337,6 +337,7 @@
#undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM
#undef SDL_VIDEO_DRIVER_ANDROID
#undef SDL_VIDEO_DRIVER_EMSCRIPTEN
#undef SDL_VIDEO_DRIVER_MALI
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR

View file

@ -397,11 +397,13 @@ SDL_EVDEV_translate_keycode(int keycode)
if (keycode < SDL_arraysize(linux_scancode_table))
scancode = linux_scancode_table[keycode];
/*
if (scancode == SDL_SCANCODE_UNKNOWN) {
SDL_Log("The key you just pressed is not recognized by SDL. To help "
"get this fixed, please report this to the SDL forums/mailing list "
"<https://discourse.libsdl.org/> EVDEV KeyCode %d", keycode);
}
*/
return scancode;
}

View file

@ -670,7 +670,7 @@ ConfigJoystick(SDL_Joystick * joystick, int fd)
++joystick->nbuttons;
}
}
for (i = 0; i < ABS_MAX; ++i) {
for (i = 0; i < ABS_MISC; ++i) {
/* Skip hats */
if (i == ABS_HAT0X) {
i = ABS_HAT3Y;
@ -976,6 +976,10 @@ HandleInputEvents(SDL_Joystick * joystick)
events[i].value);
break;
case EV_ABS:
if (code >= ABS_MISC) {
break;
}
switch (code) {
case ABS_HAT0X:
case ABS_HAT0Y:

View file

@ -51,7 +51,7 @@
#define DEFAULT_OGL_ES_PVR ( vc4 ? "libGLES_CM.so.1" : "libbrcmGLESv2.so" )
#define DEFAULT_OGL_ES ( vc4 ? "libGLESv1_CM.so.1" : "libbrcmGLESv2.so" )
#elif SDL_VIDEO_DRIVER_ANDROID || SDL_VIDEO_DRIVER_VIVANTE
#elif SDL_VIDEO_DRIVER_ANDROID || SDL_VIDEO_DRIVER_MALI || SDL_VIDEO_DRIVER_VIVANTE
/* Android */
#define DEFAULT_EGL "libEGL.so"
#define DEFAULT_OGL_ES2 "libGLESv2.so"

View file

@ -416,6 +416,7 @@ extern VideoBootStrap Android_bootstrap;
extern VideoBootStrap PSP_bootstrap;
extern VideoBootStrap RPI_bootstrap;
extern VideoBootStrap KMSDRM_bootstrap;
extern VideoBootStrap MALI_bootstrap;
extern VideoBootStrap DUMMY_bootstrap;
extern VideoBootStrap Wayland_bootstrap;
extern VideoBootStrap NACL_bootstrap;

View file

@ -97,6 +97,9 @@ static VideoBootStrap *bootstrap[] = {
#if SDL_VIDEO_DRIVER_PSP
&PSP_bootstrap,
#endif
#if SDL_VIDEO_DRIVER_MALI
&MALI_bootstrap,
#endif
#if SDL_VIDEO_DRIVER_KMSDRM
&KMSDRM_bootstrap,
#endif

View file

@ -0,0 +1,43 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_DRIVER_MALI && SDL_VIDEO_OPENGL_EGL
#include "SDL_maliopengles.h"
#include "SDL_malivideo.h"
/* EGL implementation of SDL OpenGL support */
int
MALI_GLES_LoadLibrary(_THIS, const char *path)
{
return SDL_EGL_LoadLibrary(_this, path, EGL_DEFAULT_DISPLAY, 0);
}
SDL_EGL_CreateContext_impl(MALI)
SDL_EGL_SwapWindow_impl(MALI)
SDL_EGL_MakeCurrent_impl(MALI)
#endif /* SDL_VIDEO_DRIVER_MALI && SDL_VIDEO_OPENGL_EGL */
/* vi: set ts=4 sw=4 expandtab: */

View file

@ -0,0 +1,48 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#ifndef _SDL_maliopengles_h
#define _SDL_maliopengles_h
#if SDL_VIDEO_DRIVER_MALI && SDL_VIDEO_OPENGL_EGL
#include "../SDL_sysvideo.h"
#include "../SDL_egl_c.h"
/* OpenGLES functions */
#define MALI_GLES_GetAttribute SDL_EGL_GetAttribute
#define MALI_GLES_GetProcAddress SDL_EGL_GetProcAddress
#define MALI_GLES_UnloadLibrary SDL_EGL_UnloadLibrary
#define MALI_GLES_SetSwapInterval SDL_EGL_SetSwapInterval
#define MALI_GLES_GetSwapInterval SDL_EGL_GetSwapInterval
#define MALI_GLES_DeleteContext SDL_EGL_DeleteContext
extern int MALI_GLES_LoadLibrary(_THIS, const char *path);
extern SDL_GLContext MALI_GLES_CreateContext(_THIS, SDL_Window * window);
extern int MALI_GLES_SwapWindow(_THIS, SDL_Window * window);
extern int MALI_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context);
#endif /* SDL_VIDEO_DRIVER_MALI && SDL_VIDEO_OPENGL_EGL */
#endif /* _SDL_maliopengles_h */
/* vi: set ts=4 sw=4 expandtab: */

View file

@ -0,0 +1,323 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_DRIVER_MALI
/* SDL internals */
#include "../SDL_sysvideo.h"
#include "SDL_version.h"
#include "SDL_syswm.h"
#include "SDL_loadso.h"
#include "SDL_events.h"
#include "../../events/SDL_events_c.h"
#ifdef SDL_INPUT_LINUXEV
#include "../../core/linux/SDL_evdev.h"
#endif
#include "SDL_malivideo.h"
#include "SDL_maliopengles.h"
static int
MALI_Available(void)
{
return 1;
}
static void
MALI_Destroy(SDL_VideoDevice * device)
{
if (device->driverdata != NULL) {
SDL_free(device->driverdata);
device->driverdata = NULL;
}
}
static SDL_VideoDevice *
MALI_Create()
{
SDL_VideoDevice *device;
/* Initialize SDL_VideoDevice structure */
device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
if (device == NULL) {
SDL_OutOfMemory();
return NULL;
}
device->driverdata = NULL;
/* Setup amount of available displays and current display */
device->num_displays = 0;
/* Set device free function */
device->free = MALI_Destroy;
/* Setup all functions which we can handle */
device->VideoInit = MALI_VideoInit;
device->VideoQuit = MALI_VideoQuit;
device->GetDisplayModes = MALI_GetDisplayModes;
device->SetDisplayMode = MALI_SetDisplayMode;
device->CreateSDLWindow = MALI_CreateWindow;
device->SetWindowTitle = MALI_SetWindowTitle;
device->SetWindowPosition = MALI_SetWindowPosition;
device->SetWindowSize = MALI_SetWindowSize;
device->ShowWindow = MALI_ShowWindow;
device->HideWindow = MALI_HideWindow;
device->DestroyWindow = MALI_DestroyWindow;
device->GetWindowWMInfo = MALI_GetWindowWMInfo;
device->GL_LoadLibrary = MALI_GLES_LoadLibrary;
device->GL_GetProcAddress = MALI_GLES_GetProcAddress;
device->GL_UnloadLibrary = MALI_GLES_UnloadLibrary;
device->GL_CreateContext = MALI_GLES_CreateContext;
device->GL_MakeCurrent = MALI_GLES_MakeCurrent;
device->GL_SetSwapInterval = MALI_GLES_SetSwapInterval;
device->GL_GetSwapInterval = MALI_GLES_GetSwapInterval;
device->GL_SwapWindow = MALI_GLES_SwapWindow;
device->GL_DeleteContext = MALI_GLES_DeleteContext;
device->PumpEvents = MALI_PumpEvents;
return device;
}
VideoBootStrap MALI_bootstrap = {
"mali",
"Mali EGL Video Driver",
MALI_Available,
MALI_Create
};
/*****************************************************************************/
/* SDL Video and Display initialization/handling functions */
/*****************************************************************************/
int
MALI_VideoInit(_THIS)
{
SDL_VideoDisplay display;
SDL_DisplayMode current_mode;
SDL_DisplayData *data;
struct fb_var_screeninfo vinfo;
int fd;
data = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData));
if (data == NULL) {
return SDL_OutOfMemory();
}
fd = open("/dev/fb0", O_RDWR, 0);
if (fd < 0) {
return SDL_SetError("mali-fbdev: Could not open framebuffer device");
}
if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) {
MALI_VideoQuit(_this);
return SDL_SetError("mali-fbdev: Could not get framebuffer information");
}
/* Enable triple buffering */
/*
vinfo.yres_virtual = vinfo.yres * 3;
if (ioctl(fd, FBIOPUT_VSCREENINFO, vinfo) == -1) {
printf("mali-fbdev: Error setting VSCREENINFO\n");
}
*/
close(fd);
system("setterm -cursor off");
data->native_display.width = vinfo.xres;
data->native_display.height = vinfo.yres;
SDL_zero(current_mode);
current_mode.w = vinfo.xres;
current_mode.h = vinfo.yres;
/* FIXME: Is there a way to tell the actual refresh rate? */
current_mode.refresh_rate = 60;
/* 32 bpp for default */
//current_mode.format = SDL_PIXELFORMAT_ABGR8888;
current_mode.format = SDL_PIXELFORMAT_RGBX8888;
current_mode.driverdata = NULL;
SDL_zero(display);
display.desktop_mode = current_mode;
display.current_mode = current_mode;
display.driverdata = data;
SDL_AddVideoDisplay(&display);
#ifdef SDL_INPUT_LINUXEV
if (SDL_EVDEV_Init() < 0) {
return -1;
}
#endif
return 0;
}
void
MALI_VideoQuit(_THIS)
{
/* Clear the framebuffer and ser cursor on again */
int fd = open("/dev/tty", O_RDWR);
ioctl(fd, VT_ACTIVATE, 5);
ioctl(fd, VT_ACTIVATE, 1);
close(fd);
system("setterm -cursor on");
#ifdef SDL_INPUT_LINUXEV
SDL_EVDEV_Quit();
#endif
}
void
MALI_GetDisplayModes(_THIS, SDL_VideoDisplay * display)
{
/* Only one display mode available, the current one */
SDL_AddDisplayMode(display, &display->current_mode);
}
int
MALI_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode)
{
return 0;
}
int
MALI_CreateWindow(_THIS, SDL_Window * window)
{
SDL_WindowData *windowdata;
SDL_DisplayData *displaydata;
displaydata = SDL_GetDisplayDriverData(0);
/* Allocate window internal data */
windowdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
if (windowdata == NULL) {
return SDL_OutOfMemory();
}
/* Windows have one size for now */
window->w = displaydata->native_display.width;
window->h = displaydata->native_display.height;
/* OpenGL ES is the law here */
window->flags |= SDL_WINDOW_OPENGL;
if (!_this->egl_data) {
if (SDL_GL_LoadLibrary(NULL) < 0) {
return -1;
}
}
windowdata->egl_surface = SDL_EGL_CreateSurface(_this, (NativeWindowType) &displaydata->native_display);
if (windowdata->egl_surface == EGL_NO_SURFACE) {
MALI_VideoQuit(_this);
return SDL_SetError("mali-fbdev: Can't create EGL window surface");
}
/* Setup driver data for this window */
window->driverdata = windowdata;
/* One window, it always has focus */
SDL_SetMouseFocus(window);
SDL_SetKeyboardFocus(window);
/* Window has been successfully created */
return 0;
}
void
MALI_DestroyWindow(_THIS, SDL_Window * window)
{
SDL_WindowData *data;
data = window->driverdata;
if (data) {
if (data->egl_surface != EGL_NO_SURFACE) {
SDL_EGL_DestroySurface(_this, data->egl_surface);
data->egl_surface = EGL_NO_SURFACE;
}
SDL_free(data);
}
window->driverdata = NULL;
}
void
MALI_SetWindowTitle(_THIS, SDL_Window * window)
{
}
void
MALI_SetWindowPosition(_THIS, SDL_Window * window)
{
}
void
MALI_SetWindowSize(_THIS, SDL_Window * window)
{
}
void
MALI_ShowWindow(_THIS, SDL_Window * window)
{
}
void
MALI_HideWindow(_THIS, SDL_Window * window)
{
}
/*****************************************************************************/
/* SDL Window Manager function */
/*****************************************************************************/
SDL_bool
MALI_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info)
{
if (info->version.major <= SDL_MAJOR_VERSION) {
return SDL_TRUE;
} else {
SDL_SetError("application not compiled with SDL %d.%d\n",
SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
}
/* Failed to get window manager information */
return SDL_FALSE;
}
/*****************************************************************************/
/* SDL event functions */
/*****************************************************************************/
void MALI_PumpEvents(_THIS)
{
#ifdef SDL_INPUT_LINUXEV
SDL_EVDEV_Poll();
#endif
}
#endif /* SDL_VIDEO_DRIVER_MALI */
/* vi: set ts=4 sw=4 expandtab: */

View file

@ -0,0 +1,80 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#ifndef _SDL_malivideo_h
#define _SDL_malivideo_h
#include "../../SDL_internal.h"
#include "../SDL_sysvideo.h"
#include "SDL_egl.h"
#include <EGL/egl.h>
#include <linux/vt.h>
#include <linux/fb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stropts.h>
#include <unistd.h>
#include <stdlib.h>
typedef struct SDL_DisplayData
{
struct {
unsigned short width;
unsigned short height;
} native_display;
} SDL_DisplayData;
typedef struct SDL_WindowData
{
EGLSurface egl_surface;
} SDL_WindowData;
/****************************************************************************/
/* SDL_VideoDevice functions declaration */
/****************************************************************************/
/* Display and window functions */
int MALI_VideoInit(_THIS);
void MALI_VideoQuit(_THIS);
void MALI_GetDisplayModes(_THIS, SDL_VideoDisplay * display);
int MALI_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
int MALI_CreateWindow(_THIS, SDL_Window * window);
void MALI_SetWindowTitle(_THIS, SDL_Window * window);
void MALI_SetWindowPosition(_THIS, SDL_Window * window);
void MALI_SetWindowSize(_THIS, SDL_Window * window);
void MALI_ShowWindow(_THIS, SDL_Window * window);
void MALI_HideWindow(_THIS, SDL_Window * window);
void MALI_DestroyWindow(_THIS, SDL_Window * window);
/* Window manager function */
SDL_bool MALI_GetWindowWMInfo(_THIS, SDL_Window * window,
struct SDL_SysWMinfo *info);
/* Event functions */
void MALI_PumpEvents(_THIS);
#endif /* _SDL_malivideo_h */
/* vi: set ts=4 sw=4 expandtab: */