From e6285c76bac7af04c1618c0f848509a8b7aa9437 Mon Sep 17 00:00:00 2001 From: pelya Date: Fri, 2 May 2014 01:20:38 +0300 Subject: [PATCH] Debian: enabled on-screen Alt/Ctrl/Shift keys. --- .../xserver-debian/AndroidAppSettings.cfg | 10 ++-- .../{postinstall.sh => postinstall2.sh} | 4 +- .../xserver-debian/AndroidPreBuild.sh | 1 + .../xserver-debian/ultimatedroid.raw | 1 + .../xserver-gimp/AndroidPreBuild.sh | 3 + .../xserver-gimp/ultimatedroid.raw | Bin 0 -> 8917 bytes project/jni/application/xserver/gfx.c | 55 +++++++++++++----- 7 files changed, 53 insertions(+), 21 deletions(-) rename project/jni/application/xserver-debian/AndroidData/{postinstall.sh => postinstall2.sh} (68%) create mode 120000 project/jni/application/xserver-debian/AndroidPreBuild.sh create mode 120000 project/jni/application/xserver-debian/ultimatedroid.raw create mode 100755 project/jni/application/xserver-gimp/AndroidPreBuild.sh create mode 100644 project/jni/application/xserver-gimp/ultimatedroid.raw diff --git a/project/jni/application/xserver-debian/AndroidAppSettings.cfg b/project/jni/application/xserver-debian/AndroidAppSettings.cfg index f03cb00da..2d83d502e 100644 --- a/project/jni/application/xserver-debian/AndroidAppSettings.cfg +++ b/project/jni/application/xserver-debian/AndroidAppSettings.cfg @@ -18,17 +18,17 @@ AppVersionName="14.05.01" # 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="!!System image|:data.tar.gz:http://sourceforge.net/projects/libsdl-android/files/ubuntu/dist-debug-wheezy-proot-.tar.gz/download^!!XSDL data files|:data-1.tar.gz:data-1.tgz^!!XSDL fonts|:DroidSansMono.ttf:DroidSansMono.ttf^!!Postinstall script|:postinstall.sh:postinstall.sh" +AppDataDownloadUrl="!!System image|:data.tar.gz:http://sourceforge.net/projects/libsdl-android/files/ubuntu/14.05.01/dist-debug-wheezy-proot-.tar.gz/download^!!XSDL data files|:data-1.tar.gz:data-1.tgz^!!XSDL fonts|:DroidSansMono.ttf:DroidSansMono.ttf^!!Postinstall script|:postinstall.sh:postinstall2.sh" # Reset SDL config when updating application to the new version (y) / (n) ResetSdlConfigForThisVersion=y # Delete application data files when upgrading (specify file/dir paths separated by spaces) -DeleteFilesOnUpgrade="%" +DeleteFilesOnUpgrade="img" # Here you may type readme text, which will be shown during startup. Format is: # Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ -ReadmeText='This app will download 210 Mb data,\\\\nand will use 530 Mb of internal storage.\\\\nYour old Ubuntu installation will be removed\\\\n^button:Install old version:http://sourceforge.net/projects/libsdl-android/files/ubuntu/Ubuntu.apk' +ReadmeText='This app will download 220 Mb data,\\\\nand will use 600 Mb of internal storage.\\\\nYour old installation will be removed\\\\n^button:Install old version:http://sourceforge.net/projects/libsdl-android/files/ubuntu/' # libSDL version to use (1.2/1.3/2.0) LibSdlVersion=1.2 @@ -194,7 +194,7 @@ 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' +MultiABI='armeabi-v7a x86' # Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower AppMinimumRAM=0 @@ -223,7 +223,7 @@ AppSubdirsBuild='' AppBuildExclude='' # Application command line parameters, including app name as 0-th param -AppCmdline='XSDL -nohelp -exec $SECURE_STORAGE_DIR/img/proot.sh ./startx.sh' +AppCmdline='XSDL -nohelp -screenbuttons -exec $SECURE_STORAGE_DIR/img/proot.sh ./startx.sh' # 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 diff --git a/project/jni/application/xserver-debian/AndroidData/postinstall.sh b/project/jni/application/xserver-debian/AndroidData/postinstall2.sh similarity index 68% rename from project/jni/application/xserver-debian/AndroidData/postinstall.sh rename to project/jni/application/xserver-debian/AndroidData/postinstall2.sh index dbc3408ae..01cb073fd 100755 --- a/project/jni/application/xserver-debian/AndroidData/postinstall.sh +++ b/project/jni/application/xserver-debian/AndroidData/postinstall2.sh @@ -1,10 +1,12 @@ #!/system/bin/sh -rm -rf $SDCARD/ubuntu +#rm -rf $SDCARD/ubuntu +echo "Extracting XSDL data files" cd $SECURE_STORAGE_DIR ./busybox tar xzf $UNSECURE_STORAGE_DIR/data-1.tar.gz rm -f $UNSECURE_STORAGE_DIR/data-1.tar.gz export SECURE_STORAGE_DIR=$SECURE_STORAGE_DIR/img cd $SECURE_STORAGE_DIR +echo "Installation path: $SECURE_STORAGE_DIR" ./postinstall.sh diff --git a/project/jni/application/xserver-debian/AndroidPreBuild.sh b/project/jni/application/xserver-debian/AndroidPreBuild.sh new file mode 120000 index 000000000..9d3924cd3 --- /dev/null +++ b/project/jni/application/xserver-debian/AndroidPreBuild.sh @@ -0,0 +1 @@ +../xserver-gimp/AndroidPreBuild.sh \ No newline at end of file diff --git a/project/jni/application/xserver-debian/ultimatedroid.raw b/project/jni/application/xserver-debian/ultimatedroid.raw new file mode 120000 index 000000000..d6de9e0d4 --- /dev/null +++ b/project/jni/application/xserver-debian/ultimatedroid.raw @@ -0,0 +1 @@ +../xserver-gimp/ultimatedroid.raw \ No newline at end of file diff --git a/project/jni/application/xserver-gimp/AndroidPreBuild.sh b/project/jni/application/xserver-gimp/AndroidPreBuild.sh new file mode 100755 index 000000000..bb42e5e35 --- /dev/null +++ b/project/jni/application/xserver-gimp/AndroidPreBuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp -f ultimatedroid.raw ../../../res/raw/ diff --git a/project/jni/application/xserver-gimp/ultimatedroid.raw b/project/jni/application/xserver-gimp/ultimatedroid.raw new file mode 100644 index 0000000000000000000000000000000000000000..c86a54055336575cb96a0c725ae17028c642f75a GIT binary patch literal 8917 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 X; 0 ? unpackProgressMbTotal : 1)); } } __android_log_print(ANDROID_LOG_INFO, "XSDL", "FREAD %dKb DONE", unpackProgressKb); @@ -102,6 +117,8 @@ void * unpackFilesThread(void * unused) remove("data.tar.gz"); + sprintf(unpackLog[0], "Running postinstall script..."); + strcpy( fname, getenv("SECURE_STORAGE_DIR") ); strcat( fname, "/postinstall.sh" ); if( stat( fname, &st ) != 0 ) @@ -125,7 +142,6 @@ void * unpackFilesThread(void * unused) } } - unpackProgressRunningScript = 1; __android_log_print(ANDROID_LOG_INFO, "XSDL", "Setting executable permissions on postinstall scipt"); strcpy( fname2, "chmod 755 " ); @@ -143,14 +159,17 @@ void * unpackFilesThread(void * unused) } for(;;) { - char buf[1024]; if( !fgets(buf, sizeof(buf), fo) ) break; __android_log_print(ANDROID_LOG_INFO, "XSDL", "> %s", buf); + strncpy(unpackLog[3], unpackLog[2], sizeof(unpackLog[1]) - 4); + strncpy(unpackLog[2], unpackLog[1], sizeof(unpackLog[1]) - 4); + strncpy(unpackLog[1], buf, sizeof(unpackLog[1]) - 4); } __android_log_print(ANDROID_LOG_INFO, "XSDL", "Postinstall scipt exited with status %d", pclose(fo)); - + sprintf(unpackLog[0], "Running postinstall script finished"); + unpackFinished = 1; return (void *)1; } @@ -159,16 +178,18 @@ void XSDL_unpackFiles() { pthread_t thread_id; void * status; + memset(unpackLog, 0, sizeof(unpackLog)); pthread_create(&thread_id, NULL, &unpackFilesThread, NULL); while (!unpackFinished) { SDL_Delay(400); SDL_FillRect(SDL_GetVideoSurface(), NULL, 0); - char s[128]; - sprintf(s, "Unpacking data: %d/%d Mb, %d%%", unpackProgressMb, unpackProgressMbTotal, unpackProgressMb * 100 / (unpackProgressMbTotal > 0 ? unpackProgressMbTotal : 1)); - renderString(unpackProgressRunningScript ? "Running postinstall script..." : s, VID_X/2, VID_Y/3); - renderString("You may put this app to background while it's unpacking", VID_X/2, VID_Y*2/3); + renderString(unpackLog[0], VID_X/2, VID_Y*2/8); + renderString(unpackLog[1], VID_X/2, VID_Y*3/8); + renderString(unpackLog[2], VID_X/2, VID_Y*4/8); + renderString(unpackLog[3], VID_X/2, VID_Y*5/8); + renderString("You may put this app to background while it's unpacking", VID_X/2, VID_Y*7/8); SDL_Flip(SDL_GetVideoSurface()); } @@ -182,7 +203,7 @@ void XSDL_unpackFiles() void XSDL_showConfigMenu(int * resolutionW, int * displayW, int * resolutionH, int * displayH) { - int x, y, i, ii; + int x = 0, y = 0, i, ii; SDL_Event event; int res = -1, dpi = -1; char native[32] = "0x0", native56[32], native46[32], native36[32], native26[32]; @@ -551,6 +572,8 @@ void XSDL_deinitSDL() void renderStringColor(const char *c, int x, int y, int r, int g, int b, SDL_Surface * surf) { + if (!c || !c[0]) + return; SDL_Color fColor = {r, g, b}; SDL_Rect fontRect = {0, 0, 0, 0}; SDL_Surface* fontSurface = TTF_RenderUTF8_Solid(sFont, c, fColor); @@ -569,6 +592,8 @@ void renderString(const char *c, int x, int y) void renderStringScaled(const char *c, int size, int x, int y, int r, int g, int b, SDL_Surface * surf) { + if (!c || !c[0]) + return; SDL_Color fColor = {r, g, b}; SDL_Rect fontRect = {0, 0, 0, 0}; TTF_Font* font = TTF_OpenFont("DroidSansMono.ttf", size);