From d3a98cf6cbc3bd0b9efc570f58e8812c03931c18 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 16 Oct 2018 10:08:48 +0200 Subject: Original 5.40 --- android/Makefile | 418 ++++ android/README | 189 ++ android/android.iml | 19 + android/build.gradle | 30 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes android/gradle/wrapper/gradle-wrapper.properties | 6 + android/gradlew | 160 ++ android/gradlew.bat | 90 + android/local.properties | 11 + android/screenhack-android.c | 209 ++ android/settings.gradle | 1 + .../.idea/caches/build_file_checksums.ser | Bin 0 -> 521 bytes android/xscreensaver/.idea/codeStyles/Project.xml | 29 + android/xscreensaver/.idea/compiler.xml | 22 + android/xscreensaver/.idea/gradle.xml | 19 + .../Gradle__android_arch_core_common_1_1_0_jar.xml | 11 + .../Gradle__android_arch_core_runtime_1_1_0.xml | 12 + ...le__android_arch_lifecycle_common_1_1_0_jar.xml | 11 + ..._android_arch_lifecycle_livedata_core_1_1_0.xml | 12 + ...radle__android_arch_lifecycle_runtime_1_1_0.xml | 12 + ...dle__android_arch_lifecycle_viewmodel_1_1_0.xml | 12 + ...roid_support_support_annotations_27_1_1_jar.xml | 11 + ...__com_android_support_support_compat_27_1_1.xml | 12 + ..._com_android_support_support_core_ui_27_1_1.xml | 12 + ...m_android_support_support_core_utils_27_1_1.xml | 12 + ...com_android_support_support_fragment_27_1_1.xml | 12 + ...android_support_support_media_compat_27_1_1.xml | 12 + ...adle__com_android_support_support_v4_27_1_1.xml | 12 + android/xscreensaver/.idea/misc.xml | 34 + android/xscreensaver/.idea/modules.xml | 9 + android/xscreensaver/.idea/runConfigurations.xml | 12 + android/xscreensaver/.idea/workspace.xml | 2227 ++++++++++++++++++++ android/xscreensaver/assets/fonts/OCRAStd.otf | 1 + .../xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf | 1 + android/xscreensaver/assets/fonts/YearlReg.ttf | 1 + android/xscreensaver/build.gradle | 109 + android/xscreensaver/build.xml | 92 + .../xscreensaver/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + android/xscreensaver/gradlew | 160 ++ android/xscreensaver/gradlew.bat | 90 + android/xscreensaver/jni/Android.mk | 199 ++ android/xscreensaver/jni/Application.mk | 7 + android/xscreensaver/local.properties | 11 + android/xscreensaver/project.properties | 15 + android/xscreensaver/res/drawable-ldpi/icon.png | Bin 0 -> 2134 bytes android/xscreensaver/res/drawable-mdpi/icon.png | Bin 0 -> 3039 bytes android/xscreensaver/res/drawable/thumbnail.png | Bin 0 -> 69607 bytes .../res/layout-land/activity_xscreensaver.xml | 59 + .../res/layout/activity_tv_xscreensaver.xml | 41 + .../res/layout/activity_xscreensaver.xml | 44 + android/xscreensaver/res/layout/main.xml | 7 + .../xscreensaver/res/layout/preference_blurb.xml | 45 + .../xscreensaver/res/layout/slider_preference.xml | 60 + .../src/org/jwz/xscreensaver/Activity.java | 169 ++ .../xscreensaver/src/org/jwz/xscreensaver/App.java | 22 + .../src/org/jwz/xscreensaver/Daydream.java | 269 +++ .../src/org/jwz/xscreensaver/Settings.java | 179 ++ .../src/org/jwz/xscreensaver/SliderPreference.java | 160 ++ .../src/org/jwz/xscreensaver/TTFAnalyzer.java | 153 ++ .../src/org/jwz/xscreensaver/TVActivity.java | 50 + .../src/org/jwz/xscreensaver/Wallpaper.java | 128 ++ .../src/org/jwz/xscreensaver/jwxyz.java | 1115 ++++++++++ android/xscreensaver/xscreensaver.iml | 101 + 64 files changed, 6932 insertions(+) create mode 100644 android/Makefile create mode 100644 android/README create mode 100644 android/android.iml create mode 100644 android/build.gradle create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/local.properties create mode 100644 android/screenhack-android.c create mode 100644 android/settings.gradle create mode 100644 android/xscreensaver/.idea/caches/build_file_checksums.ser create mode 100644 android/xscreensaver/.idea/codeStyles/Project.xml create mode 100644 android/xscreensaver/.idea/compiler.xml create mode 100644 android/xscreensaver/.idea/gradle.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml create mode 100644 android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml create mode 100644 android/xscreensaver/.idea/misc.xml create mode 100644 android/xscreensaver/.idea/modules.xml create mode 100644 android/xscreensaver/.idea/runConfigurations.xml create mode 100644 android/xscreensaver/.idea/workspace.xml create mode 120000 android/xscreensaver/assets/fonts/OCRAStd.otf create mode 120000 android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf create mode 120000 android/xscreensaver/assets/fonts/YearlReg.ttf create mode 100644 android/xscreensaver/build.gradle create mode 100644 android/xscreensaver/build.xml create mode 100644 android/xscreensaver/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/xscreensaver/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/xscreensaver/gradlew create mode 100644 android/xscreensaver/gradlew.bat create mode 100644 android/xscreensaver/jni/Android.mk create mode 100644 android/xscreensaver/jni/Application.mk create mode 100644 android/xscreensaver/local.properties create mode 100644 android/xscreensaver/project.properties create mode 100644 android/xscreensaver/res/drawable-ldpi/icon.png create mode 100644 android/xscreensaver/res/drawable-mdpi/icon.png create mode 100644 android/xscreensaver/res/drawable/thumbnail.png create mode 100644 android/xscreensaver/res/layout-land/activity_xscreensaver.xml create mode 100644 android/xscreensaver/res/layout/activity_tv_xscreensaver.xml create mode 100644 android/xscreensaver/res/layout/activity_xscreensaver.xml create mode 100644 android/xscreensaver/res/layout/main.xml create mode 100644 android/xscreensaver/res/layout/preference_blurb.xml create mode 100644 android/xscreensaver/res/layout/slider_preference.xml create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Activity.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/App.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Daydream.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Settings.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/SliderPreference.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/TTFAnalyzer.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/TVActivity.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Wallpaper.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/jwxyz.java create mode 100644 android/xscreensaver/xscreensaver.iml (limited to 'android') diff --git a/android/Makefile b/android/Makefile new file mode 100644 index 0000000..f0d5da0 --- /dev/null +++ b/android/Makefile @@ -0,0 +1,418 @@ +# XScreenSaver for Android + +export TERM=dumb +GRADLE = ./gradlew + +default:: debug +all:: release + +clean:: + $(GRADLE) clean + +distdepend:: + +# Set this to the set of platforms you want to compile for in debug mode. +# E.g., if you are running an x86 emulator, there's no point in compiling +# for a dozen other platforms. Release builds override this to "all". +# +export APP_ABI = all + + +# TODO: +# check_versions: + + +# These hacks have interdependencies with others, so we can't build without +# including them or there are link errors: +# +ANDROID_BASE_HACKS= \ + apple2 \ + bubble3d \ + pacman \ + polyhedra \ + sonar \ + sproingies \ + +# These are the ones that currently work, at least to some degree: +# +export ANDROID_HACKS= \ + $(ANDROID_BASE_HACKS) \ + abstractile \ + anemone \ + anemotaxis \ + antmaze \ + antspotlight \ + apollonian \ + atlantis \ + attraction \ + atunnel \ + binaryring \ + blaster \ + blinkbox \ + blitspin \ + blocktube \ + boing \ + bouboule \ + bouncingcow \ + boxed \ + boxfit \ + braid \ + bsod \ + bumps \ + cage \ + ccurve \ + celtic \ + circuit \ + cityflow \ + cloudlife \ + companioncube \ + compass \ + coral \ + crackberg \ + crumbler \ + crystal \ + cube21 \ + cubenetic \ + cubestack \ + cubestorm \ + cubetwist \ + cubicgrid \ + cwaves \ + cynosure \ + dangerball \ + decayscreen \ + deco \ + deluxe \ + demon \ + discoball \ + discrete \ + distort \ + dnalogo \ + drift \ + dymaxionmap \ + endgame \ + energystream \ + engine \ + epicycle \ + eruption \ + esper \ + euler2d \ + fadeplot \ + fiberlamp \ + filmleader \ + fireworkx \ + flame \ + flipflop \ + flipscreen3d \ + flow \ + fluidballs \ + flyingtoasters \ + fuzzyflakes \ + galaxy \ + gears \ + geodesic \ + geodesicgears \ + gflux \ + glblur \ + glcells \ + gleidescope \ + glhanoi \ + glknots \ + glmatrix \ + glplanet \ + glschool \ + glslideshow \ + glsnake \ + gltext \ + goop \ + grav \ + greynetic \ + halo \ + helix \ + hexadrop \ + hexstrut \ + hilbert \ + hopalong \ + hypertorus \ + hypnowheel \ + ifs \ + imsmap \ + interaggregate \ + interference \ + intermomentary \ + jigglypuff \ + jigsaw \ + julia \ + kaleidescope \ + kaleidocycle \ + klein \ + kumppa \ + lament \ + lavalite \ + loop \ + m6502 \ + maze \ + maze3d \ + memscroller \ + menger \ + metaballs \ + mirrorblob \ + moebius \ + moebiusgears \ + moire \ + moire2 \ + morph3d \ + mountain \ + munch \ + nerverot \ + noof \ + noseguy \ + peepers \ + penetrate \ + penrose \ + petri \ + piecewise \ + pinion \ + pipes \ + polytopes \ + pong \ + popsquares \ + projectiveplane \ + providence \ + pulsar \ + pyro \ + quasicrystal \ + queens \ + raverhoop \ + razzledazzle \ + rd-bomb \ + ripples \ + rocks \ + romanboy \ + rorschach \ + rotzoomer \ + rubik \ + rubikblocks \ + sballs \ + shadebobs \ + sierpinski \ + sierpinski3d \ + skytentacles \ + slidescreen \ + slip \ + spheremonics \ + splitflap \ + splodesic \ + spotlight \ + squiral \ + stairs \ + stonerview \ + strange \ + substrate \ + superquadrics \ + surfaces \ + swirl \ + tangram \ + tessellimage \ + thornbird \ + timetunnel \ + topblock \ + triangle \ + tronbit \ + truchet \ + twang \ + unknownpleasures \ + vermiculate \ + vfeedback \ + vigilance \ + voronoi \ + wander \ + whirlwindwarp \ + winduprobot \ + wormhole \ + xanalogtv \ + xflame \ + xjack \ + xlyap \ + xmatrix \ + xrayswarm \ + xspirograph \ + zoom \ + + +# These don't work well enough to turn on by default: +# +ANDROID_TODO= \ + antinspect \ + barcode \ + carousel \ + fliptext \ + fontglide \ + halftone \ + juggler3d \ + molecule \ + pedal \ + phosphor \ + photopile \ + polyominoes \ + qix \ + speedmine \ + starfish \ + starwars \ + testx11 \ + unicrud \ + + +# Download and resize images from jwz.org. +# This saves us having to include 4MB of images in the tar file +# that will only be used by a vast minority of people building +# from source. +# Android actually wants these to be 160x160 but our source is 200x150. + +URL = https://www.jwz.org/xscreensaver/screenshots/ +WGET = wget -q -U xscreensaver-build-android +CVT = -thumbnail '150x150^' -gravity center -extent 150x150 \ + \( +clone -alpha extract \ + -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \ + \( +clone -flip \) -compose Multiply -composite \ + \( +clone -flop \) -compose Multiply -composite \ + \) -alpha off -compose CopyOpacity -composite \ + -colorspace sRGB \ + -strip \ + -quality 95 \ + +dither -colors 128 + +# If we are making the m6502 hack, create the header file for Android +m6502.h:: + @for h in $(ANDROID_HACKS) ; do \ + if [ $${h} = "m6502" ] ; then \ + echo "Making $${h} header ..."; \ + ../hacks/m6502.sh ../hacks/m6502.h ../hacks/images/m6502/*.asm ; \ + echo "Made $${h} header"; \ + fi; \ + done + +xscreensaver/res/drawable/%.png: + @\ + FILE1=`echo "$@" | sed 's!^.*/\([^/]*\)\.png$$!\1.jpg!'` ; \ + FILE2="$@" ; \ + FILE1=`echo "$$FILE1" | sed s/rdbomb/rd-bomb/` ; \ + FILE2=`echo "$$FILE2" | sed s/rd-bomb/rdbomb/` ; \ + URL="$(URL)$$FILE1" ; \ + echo "converting $$URL..." ; \ + rm -f "$$FILE2" ; \ + $(WGET) -O- "$$URL" | \ + convert jpg:- $(CVT) "$$FILE2" ; \ + if [ ! -s "$$FILE2" ]; then \ + echo "$$FILE2 failed" >&2 ; \ + exit 1 ; \ + fi + +thumbs:: + @for f in $(ANDROID_HACKS) $(ANDROID_TODO) ; do \ + $(MAKE) xscreensaver/res/drawable/$$f.png ; \ + done + +clean_thumbs:: + @\ + for f in $(ANDROID_HACKS) $(ANDROID_TODO) ; do \ + rm -f xscreensaver/res/drawable/$$f.png ; \ + done + +distclean:: clean_thumbs clean + + +EXTRA_TARFILES = xscreensaver/res/drawable/thumbnail.png \ + +echo_tarfiles: + @FILES=`find . $(EXTRA_TARFILES) \( \( \ + -name .DS_Store \ + -o -name '*~' \ + -o -name '*.jks' \ + -o -name '*.keystore' \ + -o -name '*_dream.xml' \ + -o -name '*_settings.xml' \ + -o -name '*_wallpaper.xml' \ + -o -name AndroidManifest.xml \ + -o -name strings.xml \ + -o -name settings.xml \ + -o -name attrs.xml \ + -o -name .gitignore \ + -o -name .gradle \ + -o -name drawable \ + -o -name build \ + -o -name gen \ + -o -name libs \ + -o -name obj \ + \) -prune \) \ + -o \( \( -type f -o -type l \) \ + -print \) \ + | sed 's@^\./@@' \ + | sort` ; \ + echo $$FILES + +images_png_h: + cd ../hacks/images && $(MAKE) + +run_check:: + ../hacks/check-configs.pl --build-android $(ANDROID_HACKS) + +debug:: m6502.h run_check images_png_h + $(GRADLE) assembleDebug +release:: m6502.h run_check images_png_h + export APP_ABI=all ; \ + $(GRADLE) assembleRelease + + +KEYSTORE = xscreensaver.jks +$(KEYSTORE): + keytool -genkey -v -keystore $@ \ + -alias xscreensaver -keyalg RSA -keysize 2048 -validity 10000 + +APK_DIR = xscreensaver/build/outputs/apk/release/ +APK_UNSIGNED = $(APK_DIR)xscreensaver-release-unsigned.apk +APK_UNALIGNED = $(APK_DIR)xscreensaver-release-unaligned.apk +APK_SIGNED = $(APK_DIR)xscreensaver-release.apk + + TOOLDIR = $(shell ls -d $$HOME/Library/Android/sdk/build-tools/* | tail -1) + ZIPALIGN = $(TOOLDIR)/zipalign +JARSIGNER = jarsigner + +sign_release:: + cp -p $(APK_UNSIGNED) $(APK_UNALIGNED) + $(JARSIGNER) -verbose -sigalg SHA1withRSA -digestalg SHA1 \ + -keystore $(KEYSTORE) $(APK_UNALIGNED) xscreensaver + rm -f $(APK_SIGNED) + $(ZIPALIGN) -v 4 $(APK_UNALIGNED) $(APK_SIGNED) + rm -f $(APK_UNALIGNED) + $(JARSIGNER) -verify -verbose -certs $(APK_SIGNED) + @ls -lF $(APK_SIGNED) + +apk:: release + @\ + VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' ../utils/version.h` ; \ + HEAD="xscreensaver-$$VERS" ; \ + if [ ! -s $(APK_SIGNED) -o $(APK_UNSIGNED) -nt $(APK_SIGNED) ]; then \ + $(MAKE) sign_release ; \ + fi ; \ + set -x ; \ + cp -p $(APK_SIGNED) ../archive/$$HEAD.apk + + +## #### Pare it down for faster debugging... +#export APP_ABI = armeabi-v7a +#export APP_ABI = x86 +# +#export ANDROID_HACKS= \ +# $(ANDROID_BASE_HACKS) \ +# bsod \ +# apollonian \ +# engine \ +# dnalogo \ +# twang \ +# memscroller \ +# phosphor \ +# discoball \ +# cubetwist \ +# cubestack \ +# splodesic \ diff --git a/android/README b/android/README new file mode 100644 index 0000000..2843296 --- /dev/null +++ b/android/README @@ -0,0 +1,189 @@ + +This directory contains the Android-specific code for building xscreensaver. + +It is preliminary, and very much a work in progress. + +If you're messing with this, please let us know! + + dennis@panaceasupplies.com + jwz@jwz.org + + +To set up your Android development environment: + + Install JDK 7 (http://www.oracle.com/technetwork/java/javase/downloads/) + Install Android Studio (http://developer.android.com/sdk/) + Install Android NDK (http://developer.android.com/ndk/downloads) + Rename or link the "android-ndk-*" directory to "ndk" inside your + $ANDROID_HOME (the "sdk/" directory that is the parent of + "build-tools/", etc.) That is, it should be "sdk/ndk/". + + set $ANDROID_HOME to where your SDK is installed, or + set "sdk.dir" in the file local.properties. + On MacOS, the value you want is probably ~/Library/Android/sdk/ + Also set "ndk.dir" in local.properties. + +To build: + + ./configure + cd android + make + + Hopefully an "xscreensaver-debug.apk" file will appear in + android/xscreensaver/build/outputs/apk/. + + Load that onto your device and go to: + Settings / Display / Daydream + or just click on the XScreenSaver icon, which is a shortcut to that. + + To create and configure an emulator image, use the GUI tool and and + give the emulator a name (say, "Nexus_5"). + + $ANDROID_HOME/sdk/tools/android avd + + E.g.: Nexus 5, Android 5, Intel Atom x86_64, RAM 2048 VM 64, + storage 200, use host GPU. + + Configuration options are in $HOME/.android/avd/*.avd/config.ini + + To launch it: + + $ANDROID_HOME/sdk/tools/emulator -avd Nexus_5 + + Warning! On my system at least, the emulator runs out of memory + when trying to display the Daydream page if all of the savers are + loaded. This is troubling. You can work around this by editing + your *.avd/config.ini and setting vm.heapSize=128; or by editing + android/Makefile and paring down the $ANDROID_HACKS list to a + smaller subset (60 or so with the default heapSize). + + + To load it into the currently-running emulator or device: + $ANDROID_HOME/platform-tools/adb install -r \ + xscreensaver/build/outputs/apk/xscreensaver-debug.apk + + Extremely verbose log output, including stack traces: + $ANDROID_HOME/platform-tools/adb logcat + + Non-fatal log output for only this app: + $ANDROID_HOME/platform-tools/adb logcat \ + -s xscreensaver:d AndroidRuntime:d libEGL:d + + Note that sometimes "logcat" will just sit there forever saying + "waiting for device". This is because the emulator is a piece of + shit and sometimes decides to just randomly not service connections. + If you restart the emulator, and wait minutes for the whole damned + thing to boot up again, it will probably work next time. Probably. + + +Directory structure: + + Boilerplate for the Java version of "make": + *gradle* + *.properties + xscreensaver/*gradle* + xscreensaver/build.* + xscreensaver/*.properties + + The other half of the Makefile: + xscreensaver/jni/*.mk + + Source code: + xscreensaver/src/org/jwz/xscreensaver/*.java + xscreensaver/res/layout/*.xml + + Other relevant source code is in ../jwxyz/ and ../hacks/. + + Icons: + xscreensaver/res/drawable-ldpi/ + xscreensaver/res/drawable-mdpi/ + xscreensaver/res/drawable/ + + Files that we generate: + + gen/function-table.h + xscreensaver/AndroidManifest.xml + xscreensaver/res/drawable/*.png + xscreensaver/res/values/settings.xml + xscreensaver/res/values/strings.xml + xscreensaver/res/xml/*.xml + xscreensaver/src/org/jwz/xscreensaver/gen/*.java + + Other files generated as a part of the build process: + + gen/ + .gradle/ + xscreensaver/build/ + xscreensaver/build/outputs/apk/ -- app appears here + xscreensaver/jni/ + xscreensaver/libs/ + xscreensaver/obj/ + xscreensaver/res/ + xscreensaver/res/drawable/ + xscreensaver/res/values/ + xscreensaver/res/xml/ + xscreensaver/src/org/jwz/xscreensaver/gen/ + +When adding a new hack, edit android/Makefile, then "make clean" and "make". + + +TODO list, and known bugs: + + - See the top of ../jwxyz/jwxyz-gl.c for a low level TODO list, + but here's what's wrong with the savers from a high level view: + + - Rotation is wonky (on some devices?) + + - The Android emulator is a piece of shit and crashes all the time, + so it's possible that some of these work fine on real devices. + I don't actually have an Android device, so I have no idea. + + - As mentioned above, the Android emulator runs out of memory if + more than about 60 of the Daydreams are installed with the default + heapSize. Again, I don't know if this is an issue on real devices. + I sure hope not. + + - The code that attempts to grab a screen shot before the Daydream begins + doesn't work. + + - When a saver exits abnormally, we catch the exception and attempt to + display the error message in a dialog. The catch works, but the dialog + box does not. + + antinspect renders incorrectly + apple2 text, images into pixmaps doesn't work + barcode pixmaps + bsod pixmaps, XCopyArea problems + carousel images are corrupted + cityflow shading is wrong + endgame insanely slow + engine text + esper images don't load, no text + fliptext text + fontglide text + glblur grayscale instead of color + halftone XFillArc crash + jigglypuff incredibly slow + juggler3d blank + maze lines are not the same thickness (aliased?) + molecule blank + noseguy text; images + pacman images; launches really slowly + pedal polygons + phosphor text; pixmaps + photopile text; images don't display + polyhedra text + polyominoes pixmaps + qix polygons + queens insanely slow + sonar does icmp work? + speedmine polygons + splitflap super slow + spotlight blank + starfish polygons + starwars text + unicrud pixmaps + winduprobot dome is not transparent + xanalogtv pixmaps + xflame draws only upper left corner + xmatrix pretty slow diff --git a/android/android.iml b/android/android.iml new file mode 100644 index 0000000..7db6b23 --- /dev/null +++ b/android/android.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..648cc32 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,30 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + google() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.1.2' + } + +} + +allprojects { + repositories { + maven { url 'https://maven.google.com' } + jcenter() + google() + } +} + + +task clean(type: Delete) { + delete('./build') +} + +task distClean(type: Delete) { + delete('./.gradle') +} + +distClean.dependsOn clean diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..13372ae Binary files /dev/null and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0ac000f --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Feb 10 21:20:31 PST 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 0000000..9d82f78 --- /dev/null +++ b/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/local.properties b/android/local.properties new file mode 100644 index 0000000..238a21c --- /dev/null +++ b/android/local.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. + +# location of the SDK. This is only used by Ant +# For customization when using a Version Control System, please read the +# header note. +sdk.dir=/Users/jwz/Library/Android/sdk +ndk.dir=/Users/jwz/Library/Android/sdk/ndk diff --git a/android/screenhack-android.c b/android/screenhack-android.c new file mode 100644 index 0000000..d5067ab --- /dev/null +++ b/android/screenhack-android.c @@ -0,0 +1,209 @@ +/* xscreensaver, Copyright (c) 2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Utility functions related to the hacks/ APIs. + */ + +#include +#include +#include +#include +#include +#include +#include "screenhackI.h" +#include "xlockmoreI.h" +#include "textclient.h" + +#if defined(USE_IPHONE) || (HAVE_ANDROID) +# include "jwzgles.h" +#else +# include +#endif + +#ifndef isupper +# define isupper(c) ((c) >= 'A' && (c) <= 'Z') +#endif +#ifndef _tolower +# define _tolower(c) ((c) - 'A' + 'a') +#endif + +Bool +get_boolean_resource (Display *dpy, char *res_name, char *res_class) +{ + char *tmp, buf [100]; + char *s = get_string_resource (dpy, res_name, res_class); + char *os = s; + if (! s) return 0; + for (tmp = buf; *s; s++) + *tmp++ = isupper (*s) ? _tolower (*s) : *s; + *tmp = 0; + free (os); + + while (*buf && + (buf[strlen(buf)-1] == ' ' || + buf[strlen(buf)-1] == '\t')) + buf[strlen(buf)-1] = 0; + + if (!strcmp (buf, "on") || !strcmp (buf, "true") || !strcmp (buf, "yes")) + return 1; + if (!strcmp (buf,"off") || !strcmp (buf, "false") || !strcmp (buf,"no")) + return 0; + fprintf (stderr, "%s: %s must be boolean, not %s.\n", + progname, res_name, buf); + return 0; +} + +int +get_integer_resource (Display *dpy, char *res_name, char *res_class) +{ + int val; + char c, *s = get_string_resource (dpy, res_name, res_class); + char *ss = s; + if (!s) return 0; + + while (*ss && *ss <= ' ') ss++; /* skip whitespace */ + + if (ss[0] == '0' && (ss[1] == 'x' || ss[1] == 'X')) /* 0x: parse as hex */ + { + if (1 == sscanf (ss+2, "%x %c", (unsigned int *) &val, &c)) + { + free (s); + return val; + } + } + else /* else parse as dec */ + { + /* Allow integer values to end in ".0". */ + int L = strlen(ss); + if (L > 2 && ss[L-2] == '.' && ss[L-1] == '0') + ss[L-2] = 0; + + if (1 == sscanf (ss, "%d %c", &val, &c)) + { + free (s); + return val; + } + } + + fprintf (stderr, "%s: %s must be an integer, not %s.\n", + progname, res_name, s); + free (s); + return 0; +} + +double +get_float_resource (Display *dpy, char *res_name, char *res_class) +{ + double val; + char c, *s = get_string_resource (dpy, res_name, res_class); + if (! s) return 0.0; + if (1 == sscanf (s, " %lf %c", &val, &c)) + { + free (s); + return val; + } + fprintf (stderr, "%s: %s must be a float, not %s.\n", + progname, res_name, s); + free (s); + return 0.0; +} + + +char * +textclient_mobile_date_string (void) +{ + struct utsname uts; + if (uname (&uts) < 0) + return strdup("uname() failed"); + else + { + time_t now = time ((time_t *) 0); + char *ts = ctime (&now); + char *buf, *s; + if ((s = strchr(uts.nodename, '.'))) + *s = 0; + buf = (char *) malloc(strlen(uts.machine) + + strlen(uts.sysname) + + strlen(uts.release) + + strlen(ts) + 10); + sprintf (buf, "%s %s %s\n%s", uts.machine, uts.sysname, uts.release, ts); + return buf; + } +} + + +/* used by the OpenGL screen savers + */ + +/* Does nothing - prepareContext already did the work. + */ +void +glXMakeCurrent (Display *dpy, Window window, GLXContext context) +{ +} + + +/* clear away any lingering error codes */ +void +clear_gl_error (void) +{ + while (glGetError() != GL_NO_ERROR) + ; +} + + +// needs to be implemented in Android... +/* Copy the back buffer to the front buffer. + */ +void +glXSwapBuffers (Display *dpy, Window window) +{ +} + + +/* Called by OpenGL savers using the XLockmore API. + */ +GLXContext * +init_GL (ModeInfo *mi) +{ + // Window win = mi->window; + + // Caller expects a pointer to an opaque struct... which it dereferences. + // Don't ask me, it's historical... + static int blort = -1; + return (void *) &blort; +} + +/* report a GL error. */ +void +check_gl_error (const char *type) +{ + char buf[100]; + GLenum i; + const char *e; + switch ((i = glGetError())) { + case GL_NO_ERROR: return; + case GL_INVALID_ENUM: e = "invalid enum"; break; + case GL_INVALID_VALUE: e = "invalid value"; break; + case GL_INVALID_OPERATION: e = "invalid operation"; break; + case GL_STACK_OVERFLOW: e = "stack overflow"; break; + case GL_STACK_UNDERFLOW: e = "stack underflow"; break; + case GL_OUT_OF_MEMORY: e = "out of memory"; break; +#ifdef GL_TABLE_TOO_LARGE_EXT + case GL_TABLE_TOO_LARGE_EXT: e = "table too large"; break; +#endif +#ifdef GL_TEXTURE_TOO_LARGE_EXT + case GL_TEXTURE_TOO_LARGE_EXT: e = "texture too large"; break; +#endif + default: + e = buf; sprintf (buf, "unknown GL error %d", (int) i); break; + } + __android_log_write(ANDROID_LOG_ERROR, "xscreensaver", e); +} diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..5fc665b --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1 @@ +include ':xscreensaver' diff --git a/android/xscreensaver/.idea/caches/build_file_checksums.ser b/android/xscreensaver/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000..bc8f00c Binary files /dev/null and b/android/xscreensaver/.idea/caches/build_file_checksums.ser differ diff --git a/android/xscreensaver/.idea/codeStyles/Project.xml b/android/xscreensaver/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..30aa626 --- /dev/null +++ b/android/xscreensaver/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/compiler.xml b/android/xscreensaver/.idea/compiler.xml new file mode 100644 index 0000000..9a8b7e5 --- /dev/null +++ b/android/xscreensaver/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/gradle.xml b/android/xscreensaver/.idea/gradle.xml new file mode 100644 index 0000000..3ac097a --- /dev/null +++ b/android/xscreensaver/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml new file mode 100644 index 0000000..9869803 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml new file mode 100644 index 0000000..03529f7 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml new file mode 100644 index 0000000..29c0049 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml new file mode 100644 index 0000000..c43180e --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml new file mode 100644 index 0000000..6031fb9 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml new file mode 100644 index 0000000..11a24fb --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml new file mode 100644 index 0000000..1517ad9 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml new file mode 100644 index 0000000..fba52e8 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml new file mode 100644 index 0000000..3ccece0 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml new file mode 100644 index 0000000..69d23f2 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml new file mode 100644 index 0000000..8eb356f --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml new file mode 100644 index 0000000..c577eba --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml new file mode 100644 index 0000000..10d3108 --- /dev/null +++ b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/misc.xml b/android/xscreensaver/.idea/misc.xml new file mode 100644 index 0000000..c0f68ed --- /dev/null +++ b/android/xscreensaver/.idea/misc.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/modules.xml b/android/xscreensaver/.idea/modules.xml new file mode 100644 index 0000000..33191fe --- /dev/null +++ b/android/xscreensaver/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/runConfigurations.xml b/android/xscreensaver/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/android/xscreensaver/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/.idea/workspace.xml b/android/xscreensaver/.idea/workspace.xml new file mode 100644 index 0000000..1dedd64 --- /dev/null +++ b/android/xscreensaver/.idea/workspace.xml @@ -0,0 +1,2227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1475536195508 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/xscreensaver/assets/fonts/OCRAStd.otf b/android/xscreensaver/assets/fonts/OCRAStd.otf new file mode 120000 index 0000000..6259345 --- /dev/null +++ b/android/xscreensaver/assets/fonts/OCRAStd.otf @@ -0,0 +1 @@ +../../../../OSX/OCRAStd.otf \ No newline at end of file diff --git a/android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf b/android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf new file mode 120000 index 0000000..184d654 --- /dev/null +++ b/android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf @@ -0,0 +1 @@ +../../../../OSX/PxPlus_IBM_VGA8.ttf \ No newline at end of file diff --git a/android/xscreensaver/assets/fonts/YearlReg.ttf b/android/xscreensaver/assets/fonts/YearlReg.ttf new file mode 120000 index 0000000..8977be4 --- /dev/null +++ b/android/xscreensaver/assets/fonts/YearlReg.ttf @@ -0,0 +1 @@ +../../../../OSX/YearlReg.ttf \ No newline at end of file diff --git a/android/xscreensaver/build.gradle b/android/xscreensaver/build.gradle new file mode 100644 index 0000000..f0ff9a3 --- /dev/null +++ b/android/xscreensaver/build.gradle @@ -0,0 +1,109 @@ +apply plugin: 'android' + +dependencies { + compile fileTree(include: '*.jar', dir: 'libs') + compile "com.android.support:support-v4:27.1.1" +} + +android { + compileSdkVersion 27 + buildToolsVersion "27.0.3" + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + resources.srcDirs = ['src'] + aidl.srcDirs = ['src'] + renderscript.srcDirs = ['src'] + res.srcDirs = ['res'] + assets.srcDirs = ['assets'] + // jniLibs.srcDirs = ['jni'] + jniLibs.srcDirs = ['libs'] + jni.srcDirs = [] // disable automatic ndk-build call + } + + // Move the tests to tests/java, tests/res, etc... + androidTest.setRoot('tests') + + // Move the build types to build-types/ + // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... + // This moves them out of them default location under src//... which would + // conflict with src/ being used by the main source set. + // Adding new build types or product flavors should be accompanied + // by a similar customization. + debug.setRoot('build-types/debug') + release.setRoot('build-types/release') + } + project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9] + //versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-* + + + // put ndk-build in build's path, or replace below with its full path + task ndkBuild(type: Exec) { + Properties properties = new Properties() + properties.load(project.rootProject.file('local.properties').newDataInputStream()) + def ndkDir = properties.getProperty('ndk.dir') + commandLine "$ndkDir/ndk-build", '-C', file('jni').absolutePath, + '-j' + Runtime.getRuntime().availableProcessors().toString() + } + + // generate files early in the process + task perlBuild(type: Exec) { + commandLine 'sh', '-c', + 'cd ..; ../hacks/check-configs.pl --build-android $ANDROID_HACKS' + } + + task perlClean(type: Delete) { + delete('../gen') + delete('res/values') + delete('res/xml') + delete('src/org/jwz/xscreensaver/gen') + delete('AndroidManifest.xml') + } + + task objlibClean(type: Delete) { + delete('./build') + delete('./libs') + delete('./obj') + } + + task downloadNeededDrawables(type: Exec) { + commandLine 'sh', '-c', + 'cd ../ ; \ + for f in $ANDROID_HACKS; do \ + f=`echo "$f" | sed s/rd-bomb/rdbomb/` ; \ + make -s xscreensaver/res/drawable/$f.png ; \ + done' + } + preBuild.dependsOn downloadNeededDrawables + + preBuild.dependsOn perlBuild + + clean.dependsOn perlClean + clean.dependsOn objlibClean + + tasks.withType(JavaCompile) { + options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" + } + + tasks.withType(JavaCompile) { + compileTask -> compileTask.dependsOn ndkBuild + } + + + defaultConfig { + minSdkVersion 15 + targetSdkVersion 27 + } + productFlavors { + } + buildTypes { + debug { + jniDebuggable true + } + } +} diff --git a/android/xscreensaver/build.xml b/android/xscreensaver/build.xml new file mode 100644 index 0000000..abda7fe --- /dev/null +++ b/android/xscreensaver/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/xscreensaver/gradle/wrapper/gradle-wrapper.jar b/android/xscreensaver/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..13372ae Binary files /dev/null and b/android/xscreensaver/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/xscreensaver/gradle/wrapper/gradle-wrapper.properties b/android/xscreensaver/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..3524910 --- /dev/null +++ b/android/xscreensaver/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Feb 10 21:20:31 PST 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/android/xscreensaver/gradlew b/android/xscreensaver/gradlew new file mode 100644 index 0000000..9d82f78 --- /dev/null +++ b/android/xscreensaver/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/android/xscreensaver/gradlew.bat b/android/xscreensaver/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/android/xscreensaver/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/xscreensaver/jni/Android.mk b/android/xscreensaver/jni/Android.mk new file mode 100644 index 0000000..1e20a83 --- /dev/null +++ b/android/xscreensaver/jni/Android.mk @@ -0,0 +1,199 @@ +LOCAL_PATH := $(call my-dir)/../../.. + +# -Wnested-externs would also be here, but for Android unistd.h. +SHARED_CFLAGS = \ + -std=c99 \ + -Wall \ + -Wstrict-prototypes \ + -Wmissing-prototypes \ + -DGL_GLEXT_PROTOTYPES \ + -DSTANDALONE=1 \ + -DHAVE_ANDROID=1 \ + -DHAVE_GL=1 \ + -DHAVE_JWXYZ=1 \ + -DJWXYZ_GL=1 \ + -DJWXYZ_IMAGE=1 \ + -DHAVE_JWZGLES=1 \ + -DHAVE_XUTF8DRAWSTRING=1 \ + -DHAVE_GLBINDTEXTURE=1 \ + -DHAVE_UNISTD_H=1 \ + -DHAVE_INTTYPES_H=1 \ + -DHAVE_UNAME=1 \ + -DHAVE_UTIL_H=1 \ + -DGETTIMEOFDAY_TWO_ARGS=1 \ + -DHAVE_ICMP=1 \ + -DHAVE_PTHREAD=1 \ + +SHARED_C_INCLUDES = \ + $(LOCAL_PATH) \ + $(LOCAL_PATH)/android \ + $(LOCAL_PATH)/utils \ + $(LOCAL_PATH)/jwxyz \ + $(LOCAL_PATH)/hacks \ + $(LOCAL_PATH)/hacks/glx \ + +include $(CLEAR_VARS) + +LOCAL_MODULE := xscreensaver-gl + +LOCAL_SRC_FILES := \ + android/screenhack-android.c \ + hacks/glx/dropshadow.c \ + hacks/glx/chessmodels.c \ + hacks/glx/fps-gl.c \ + hacks/glx/gltrackball.c \ + hacks/glx/glut_stroke.c \ + hacks/glx/glut_swidth.c \ + hacks/glx/grab-ximage.c \ + hacks/glx/marching.c \ + hacks/glx/normals.c \ + hacks/glx/rotator.c \ + hacks/glx/sphere.c \ + hacks/glx/texfont.c \ + hacks/glx/trackball.c \ + hacks/glx/tube.c \ + +# Some savers occupy more than one source file: +LOCAL_SRC_FILES += \ + hacks/glx/b_draw.c \ + hacks/glx/b_lockglue.c \ + hacks/glx/b_sphere.c \ + hacks/glx/buildlwo.c \ + hacks/glx/companion_quad.c \ + hacks/glx/companion_disc.c \ + hacks/glx/companion_heart.c \ + hacks/glx/cow_face.c \ + hacks/glx/cow_hide.c \ + hacks/glx/cow_hoofs.c \ + hacks/glx/cow_horns.c \ + hacks/glx/cow_tail.c \ + hacks/glx/cow_udder.c \ + hacks/glx/dolphin.c \ + hacks/glx/dymaxionmap-coords.c \ + hacks/glx/gllist.c \ + hacks/glx/glschool_alg.c \ + hacks/glx/glschool_gl.c \ + hacks/glx/involute.c \ + hacks/glx/lament_model.c \ + hacks/glx/pipeobjs.c \ + hacks/glx/quickhull.c \ + hacks/glx/robot.c \ + hacks/glx/robot-wireframe.c \ + hacks/glx/polyhedra-gl.c \ + hacks/glx/s1_1.c \ + hacks/glx/s1_2.c \ + hacks/glx/s1_3.c \ + hacks/glx/s1_4.c \ + hacks/glx/s1_5.c \ + hacks/glx/s1_6.c \ + hacks/glx/s1_b.c \ + hacks/glx/seccam.c \ + hacks/glx/shark.c \ + hacks/glx/ships.c \ + hacks/glx/sonar-sim.c \ + hacks/glx/sonar-icmp.c \ + hacks/glx/splitflap_obj.c \ + hacks/glx/sproingiewrap.c \ + hacks/glx/stonerview-move.c \ + hacks/glx/stonerview-osc.c \ + hacks/glx/stonerview-view.c \ + hacks/glx/swim.c \ + hacks/glx/tangram_shapes.c \ + hacks/glx/teapot.c \ + hacks/glx/toast.c \ + hacks/glx/toast2.c \ + hacks/glx/toaster.c \ + hacks/glx/toaster_base.c \ + hacks/glx/toaster_handle.c \ + hacks/glx/toaster_handle2.c \ + hacks/glx/toaster_jet.c \ + hacks/glx/toaster_knob.c \ + hacks/glx/toaster_slots.c \ + hacks/glx/toaster_wing.c \ + hacks/glx/tronbit_idle1.c \ + hacks/glx/tronbit_idle2.c \ + hacks/glx/tronbit_no.c \ + hacks/glx/tronbit_yes.c \ + hacks/glx/tunnel_draw.c \ + hacks/glx/whale.c \ + +# The source files of the currently active GL hacks: +LOCAL_SRC_FILES += $(shell \ + for f in $$ANDROID_HACKS ; do \ + if [ "$$f" = "companioncube" ]; then f="companion"; fi ; \ + if [ -f "../../../hacks/glx/$$f.c" ]; then \ + echo "hacks/glx/$$f.c" ; \ + fi ; \ + done ) + +LOCAL_C_INCLUDES := $(SHARED_C_INCLUDES) +LOCAL_CFLAGS += $(SHARED_CFLAGS) -DUSE_GL + +include $(BUILD_STATIC_LIBRARY) + +############################################################################## + +include $(CLEAR_VARS) + +LOCAL_MODULE := xscreensaver + +LOCAL_STATIC_LIBRARIES := xscreensaver-gl + +# The base framework files: +LOCAL_SRC_FILES := \ + jwxyz/jwxyz-android.c \ + jwxyz/jwxyz-common.c \ + jwxyz/jwxyz-gl.c \ + jwxyz/jwxyz-image.c \ + jwxyz/jwxyz-timers.c \ + jwxyz/jwzgles.c \ + +# Utilities used by the hacks: +LOCAL_SRC_FILES += \ + hacks/analogtv.c \ + hacks/delaunay.c \ + hacks/fps.c \ + hacks/xlockmore.c \ + hacks/ximage-loader.c \ + utils/async_netdb.c \ + utils/aligned_malloc.c \ + utils/colorbars.c \ + utils/colors.c \ + utils/erase.c \ + utils/font-retry.c \ + utils/grabclient.c \ + utils/hsv.c \ + utils/logo.c \ + utils/minixpm.c \ + utils/pow2.c \ + utils/resources.c \ + utils/spline.c \ + utils/textclient-mobile.c \ + utils/thread_util.c \ + utils/usleep.c \ + utils/utf8wc.c \ + utils/xft.c \ + utils/xshm.c \ + utils/yarandom.c \ + +# The source files of the currently active Xlib hacks: +LOCAL_SRC_FILES += $(shell \ + for f in $$ANDROID_HACKS ; do \ + if [ -f "../../../hacks/$$f.c" ]; then \ + echo "hacks/$$f.c" ; \ + fi ; \ + done ) + +# Some savers occupy more than one source file: +LOCAL_SRC_FILES += \ + hacks/apple2-main.c \ + hacks/asm6502.c \ + hacks/pacman_ai.c \ + hacks/pacman_level.c \ + +LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lEGL -latomic -landroid -ljnigraphics + +LOCAL_C_INCLUDES := $(SHARED_C_INCLUDES) +LOCAL_CFLAGS += $(SHARED_CFLAGS) + +include $(BUILD_SHARED_LIBRARY) diff --git a/android/xscreensaver/jni/Application.mk b/android/xscreensaver/jni/Application.mk new file mode 100644 index 0000000..d3f5436 --- /dev/null +++ b/android/xscreensaver/jni/Application.mk @@ -0,0 +1,7 @@ +# Get this value from android/Makefile +APP_ABI := $(shell echo $$APP_ABI) +APP_STL := stlport_static +APP_PLATFORM := android-14 +# ^^ APP_PLATFORM is minimum API version supported +# https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#target-api-set-higher-than-device-api + diff --git a/android/xscreensaver/local.properties b/android/xscreensaver/local.properties new file mode 100644 index 0000000..d530e0d --- /dev/null +++ b/android/xscreensaver/local.properties @@ -0,0 +1,11 @@ +## This file is automatically generated by Android Studio. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Mon Oct 03 16:09:56 PDT 2016 +sdk.dir=/Users/jwz/Library/Android/sdk diff --git a/android/xscreensaver/project.properties b/android/xscreensaver/project.properties new file mode 100644 index 0000000..1e1e7a3 --- /dev/null +++ b/android/xscreensaver/project.properties @@ -0,0 +1,15 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +android.library.reference.1= +# Project target. +target=android-19 diff --git a/android/xscreensaver/res/drawable-ldpi/icon.png b/android/xscreensaver/res/drawable-ldpi/icon.png new file mode 100644 index 0000000..c4d1934 Binary files /dev/null and b/android/xscreensaver/res/drawable-ldpi/icon.png differ diff --git a/android/xscreensaver/res/drawable-mdpi/icon.png b/android/xscreensaver/res/drawable-mdpi/icon.png new file mode 100644 index 0000000..1e14e4b Binary files /dev/null and b/android/xscreensaver/res/drawable-mdpi/icon.png differ diff --git a/android/xscreensaver/res/drawable/thumbnail.png b/android/xscreensaver/res/drawable/thumbnail.png new file mode 100644 index 0000000..a86c16c Binary files /dev/null and b/android/xscreensaver/res/drawable/thumbnail.png differ diff --git a/android/xscreensaver/res/layout-land/activity_xscreensaver.xml b/android/xscreensaver/res/layout-land/activity_xscreensaver.xml new file mode 100644 index 0000000..d9094b9 --- /dev/null +++ b/android/xscreensaver/res/layout-land/activity_xscreensaver.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + +