From fa67a2728ed15ba59f9400b7abefd74975bbbce5 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Fri, 1 Nov 2013 23:24:31 +0200 Subject: [PATCH] X.org server based on XSDL, I did not try to run it yet --- .gitmodules | 3 + .../commandergenius/commandergenius | 2 +- project/jni/application/openarena/engine | 2 +- project/jni/application/openarena/vm | 2 +- project/jni/application/teeworlds/src | 2 +- project/jni/application/xserver/.gitignore | 1 + .../xserver/AndroidAppSettings.cfg | 226 ++++++++++++++++++ .../jni/application/xserver/AndroidBuild.sh | 44 ++++ project/jni/application/xserver/icon.png | Bin 0 -> 9441 bytes project/jni/application/xserver/main.c | 21 ++ project/jni/application/xserver/xserver | 1 + 11 files changed, 300 insertions(+), 4 deletions(-) create mode 100644 project/jni/application/xserver/.gitignore create mode 100644 project/jni/application/xserver/AndroidAppSettings.cfg create mode 100755 project/jni/application/xserver/AndroidBuild.sh create mode 100644 project/jni/application/xserver/icon.png create mode 100644 project/jni/application/xserver/main.c create mode 160000 project/jni/application/xserver/xserver diff --git a/.gitmodules b/.gitmodules index ea567d2b1..f2433f5c3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ [submodule "project/jni/application/c-dogs/src"] path = project/jni/application/c-dogs/src url = git@github.com:cxong/cdogs-sdl.git +[submodule "project/jni/application/xserver/xserver"] + path = project/jni/application/xserver/xserver + url = git@github.com:pelya/xserver.git diff --git a/project/jni/application/commandergenius/commandergenius b/project/jni/application/commandergenius/commandergenius index 5b13939a9..1bcbadd1e 160000 --- a/project/jni/application/commandergenius/commandergenius +++ b/project/jni/application/commandergenius/commandergenius @@ -1 +1 @@ -Subproject commit 5b13939a9f047ad7878825a4dfb19b439d69fa6b +Subproject commit 1bcbadd1eadd735235288463239c348f5b58f845 diff --git a/project/jni/application/openarena/engine b/project/jni/application/openarena/engine index 07c011b6c..30e98be35 160000 --- a/project/jni/application/openarena/engine +++ b/project/jni/application/openarena/engine @@ -1 +1 @@ -Subproject commit 07c011b6ccb275fc2b69dbd6e7ee8dba6223e59a +Subproject commit 30e98be3582cca3009f371ca2f9a7334e24e1582 diff --git a/project/jni/application/openarena/vm b/project/jni/application/openarena/vm index 4b83db91a..278f04520 160000 --- a/project/jni/application/openarena/vm +++ b/project/jni/application/openarena/vm @@ -1 +1 @@ -Subproject commit 4b83db91ab39b9cae27f087fe1a0a8ba9f30d43d +Subproject commit 278f045202ff1bc0c1911b6c3d441909ba93ee87 diff --git a/project/jni/application/teeworlds/src b/project/jni/application/teeworlds/src index 34b64249c..e5489c8c0 160000 --- a/project/jni/application/teeworlds/src +++ b/project/jni/application/teeworlds/src @@ -1 +1 @@ -Subproject commit 34b64249c46a90ce127f32b3ef41a565b8a70a61 +Subproject commit e5489c8c089e57d88bbaa90df0176d5e5d4c6351 diff --git a/project/jni/application/xserver/.gitignore b/project/jni/application/xserver/.gitignore new file mode 100644 index 000000000..5761abcfd --- /dev/null +++ b/project/jni/application/xserver/.gitignore @@ -0,0 +1 @@ +*.o diff --git a/project/jni/application/xserver/AndroidAppSettings.cfg b/project/jni/application/xserver/AndroidAppSettings.cfg new file mode 100644 index 000000000..b220e69ad --- /dev/null +++ b/project/jni/application/xserver/AndroidAppSettings.cfg @@ -0,0 +1,226 @@ +# The application settings for Android libSDL port + +AppSettingVersion=19 + +# libSDL version to use (1.2 or 1.3, specify 1.3 for SDL2) +LibSdlVersion=1.2 + +# Specify application name (e.x. My Application) +AppName="XSDL X server" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=X.org.server + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=n + +# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by build system +# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS +AppDataDownloadUrl="!!Data files - 20 Mb|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/openttd-data-1.3.2.zip/download" + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) +VideoDepthBpp=24 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedStencilBuffer=n + +# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles2=n + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) +SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) +SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) +SdlVideoResizeKeepAspect=n + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) +CompatibilityHacks=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=y + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=y + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) +AppNeedsTwoButtonMouse=y + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n) +AppNeedsArrowKeys=n + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state +NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA +RedefinedKeys="LALT RETURN NO_REMAP NO_REMAP RETURN ESCAPE" + +# Number of virtual keyboard keys (currently 6 is maximum) +AppTouchscreenKeyboardKeysAmount=0 + +# Number of virtual keyboard keys that support autofire (currently 2 is maximum) +AppTouchscreenKeyboardKeysAmountAutoFire=0 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) +RedefinedKeysScreenKb="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick) +# 1 = Simple Theme by Beholder (white, with gamepad joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +TouchscreenKeysTheme=2 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y L1 R1 L2 R2 LThumb RThumb +RedefinedKeysGamepad="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2" + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=3000 + +# Menu items to hide from startup menu, available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +HiddenMenuOptions='SettingsMenuMisc.OptionalDownloadConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +FirstStartMenuOptions='' + +# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices, +# but .apk size is 2x bigger (y) / (n) / (x86) / (all) +MultiABI=armeabi-v7a + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=0 + +# Application version code (integer) +AppVersionCode=11101 + +# Application user-visible version name (string) +AppVersionName="1.11.01" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=n + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="%" + +# Optional shared libraries to compile - removing some of them will save space +# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +CompiledLibraries="jpeg png freetype sdl-1.2" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=y + +# Aditional CFLAGS for application +AppCflags='' + +# Additional LDFLAGS for application +AppLdflags='' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders= + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='' + +# Exclude these files from build +AppBuildExclude='' + +# Application command line parameters, including app name as 0-th param +AppCmdline='XSDL' + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\n to separate lines^de:Text in Deutsch^ru:Text in Russian, and so on (that's four backslashes, nice isn't it?) +ReadmeText='' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=m + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER) +AdmobBannerSize= + diff --git a/project/jni/application/xserver/AndroidBuild.sh b/project/jni/application/xserver/AndroidBuild.sh new file mode 100755 index 000000000..2129120b6 --- /dev/null +++ b/project/jni/application/xserver/AndroidBuild.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +LOCAL_PATH=`dirname $0` +LOCAL_PATH=`cd $LOCAL_PATH && pwd` + +../setEnvironment-armeabi-v7a.sh sh -c '\ +$CC $CFLAGS -c main.c -o main.o' || exit 1 + +cd xserver +[ -e configure ] || autoreconf --force -v --install || exit 1 +cd android + +./build.sh || exit 1 + +../../../setEnvironment-armeabi-v7a.sh sh -c '\ +$CC $LDFLAGS -o ../../libapplication-armeabi-v7a.so -L. \ +../../main.o \ +hw/kdrive/sdl/sdl.o \ +dix/.libs/libmain.a \ +dix/.libs/libdix.a \ +hw/kdrive/src/.libs/libkdrive.a \ +hw/kdrive/src/.libs/libkdrivestubs.a \ +fb/.libs/libfb.a \ +mi/.libs/libmi.a \ +xfixes/.libs/libxfixes.a \ +Xext/.libs/libXext.a \ +dbe/.libs/libdbe.a \ +record/.libs/librecord.a \ +randr/.libs/librandr.a \ +render/.libs/librender.a \ +damageext/.libs/libdamageext.a \ +miext/sync/.libs/libsync.a \ +miext/damage/.libs/libdamage.a \ +miext/shadow/.libs/libshadow.a \ +Xi/.libs/libXi.a \ +xkb/.libs/libxkb.a \ +xkb/.libs/libxkbstubs.a \ +composite/.libs/libcomposite.a \ +os/.libs/libos.a \ +hw/kdrive/linux/.libs/liblinux.a \ +-lpixman-1 -lXfont -lXau -lXdmcp -lfontenc -lfreetype -lts' \ +|| exit 1 + +exit 0 diff --git a/project/jni/application/xserver/icon.png b/project/jni/application/xserver/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..46e51ce081168ad1e621aecb7114aac72ce761ef GIT binary patch literal 9441 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 LS3j3^P6 +#include + +extern int android_main(int argc, char *argv[], char *envp[]); + +int main(int argc, char* argv[]) +{ + char screenres[64] = "640x480x24"; + char* args[] = { + "XSDL", + ":1111", + "-3button", + "-screen", + screenres + }; + char * envp[] = { NULL }; + + sprintf("%sx%sx%d", getenv("DISPLAY_RESOLUTION_WIDTH"), getenv("DISPLAY_RESOLUTION_HEIGHT"), 24); + + return android_main(5, args, envp); +} diff --git a/project/jni/application/xserver/xserver b/project/jni/application/xserver/xserver new file mode 160000 index 000000000..e8559f1c9 --- /dev/null +++ b/project/jni/application/xserver/xserver @@ -0,0 +1 @@ +Subproject commit e8559f1c939049eed3b967b28f3d9c28a8f6d73e