Skip to content

Commit 7fa9fbc

Browse files
committed
Squashed commit of the following:
commit cc553af Merge: 7c61dd9 c58528f Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sun Nov 29 15:41:58 2020 +0100 Merge branch 'merge-upstream-silly-rename-of-lnjscheme-to-ln_jscheme' of ssh://github.com/0-8-15/lambdanative into development commit c58528f Merge: 54bc984 51dfeed Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sun Nov 29 15:35:38 2020 +0100 Merge branch 'master' of https://github.com/part-cw/lambdanative into merge-upstream-silly-rename-of-lnjscheme-to-ln_jscheme commit 51dfeed Author: Peter Lewis <peter.lewis@bcchr.ca> Date: Fri Nov 27 11:57:52 2020 -0800 ANDROID: request permissions from Manifest This reads permissions from the manifest and requests all that are needed. Apps and modules should add necessary permissions to ANDROID_xml_permissions. Moved the initial setContentView back to before @ANDROID_JAVA_ONCREATE@ so that apps can set a content view in ANDROID_java_oncreate commit 1e4c9f3 Author: 0-8-15 <Joerg.Wittenberger@softeyes.net> Date: Thu Nov 26 22:25:11 2020 -0800 WEBVIEW: Add another webview - ANDROID only! (part-cw#387) Moved the 'webview' script from DemoAndroidLNjScheme into a module of its own; this module is a bit of a stub. Might receive updates to become a nicer looking browser. Meanwhile still intended to showcase how to call Java via jScheme commit 1cbc09b Author: 0-8-15 <Joerg.Wittenberger@softeyes.net> Date: Thu Nov 26 22:14:54 2020 -0800 LN_JSCHEME: New module to call any Android API without JNI (part-cw#387) Moves LNjScheme from DemoAndroidLNjScheme to its own module. Also updates DemoAndroidLNjScheme to use of ln_jscheme and webview commit 7e6fcb3 Author: 0-8-15 <Joerg.Wittenberger@softeyes.net> Date: Thu Nov 26 21:25:10 2020 -0800 EVENTLOOP: Add support for a new jScheme related event (part-cw#387) Allocates a single event number (126) and dispatches it to a possibly registered receiver - or is ignored as before. commit 20b33a1 Author: 0-8-15 <Joerg.Wittenberger@softeyes.net> Date: Thu Nov 26 01:38:46 2020 -0800 ANDROID: Fix rendering freeze upon startup commit 7c61dd9 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Tue Nov 24 20:07:56 2020 +0100 NATIVE-KEYPAD+ANDROID: more error checking in JNI commit 9d8e809 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Tue Nov 24 14:20:44 2020 +0100 ANDROID: fix rendering freeze upon startup commit c77a547 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Tue Nov 24 12:58:39 2020 +0100 ANDROID: try harder to handle onStop and onPause Note: This is at the moment meant for evaluation. Works for me, can't break it. However if this is going to be the final call, those file names ANDROID_java_oncreate are no longer telling exactly where the code ends up. That's bad, bnut renaming them is likely even worse. commit c351669 Merge: 6e0c757 8d0d7ed Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Tue Nov 24 12:57:32 2020 +0100 Merge branch 'stable-0815' of ssh://github.com/0-8-15/lambdanative into development commit 6e0c757 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Mon Nov 23 21:43:02 2020 +0100 LNjSCHEME: revert change breaking things commit 865b6c7 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Mon Nov 23 21:24:30 2020 +0100 LNjSCHEME: make initialization once only Also move ANDROID_xml_permissions to webview, where they belong. commit 603d630 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Mon Nov 23 20:54:57 2020 +0100 ANDROID: make mGLView static and initialization once only This appears to be the correct way and seems to actually solve the issue observed and not fixed by da86a5160 ff. commit fa19aa9 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Mon Nov 23 19:20:12 2020 +0100 JNI: conservative coding - #defines LAMBDANATIVE_JNI_VERSION to JNI_VERSION_1_4 - uses `jint` as if it was an opaque type - checks via GetEnv before attaching a thread (there are claims on the Internet that this may save some overhead) - use AttachCurrentThreadAsDaemon instead of AttachCurrentThread for gut feeling commit 70752a2 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sun Nov 22 16:56:37 2020 +0100 JNI: be careful to free local references commit 34ccd0d Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sun Nov 22 13:01:30 2020 +0100 ANDROID: use systemapp directry commit 270193a Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sun Nov 22 12:58:40 2020 +0100 ANDROID: do not call ReleaseStringUTFChars with an unrelated pointer commit c752898 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sat Nov 21 14:26:16 2020 +0100 ANDROID: error out when build requires to write system directories commit d3dd374 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sat Nov 21 13:43:05 2020 +0100 BACKPORT: use upstreams version of camera commit 5b9a30f Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sat Nov 21 13:12:00 2020 +0100 remove old debug code commit c48c7b1 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sat Nov 21 13:04:21 2020 +0100 CLIPBOARD: fix compiler complaints warning: returning 'const char *' from a function with result type 'char *' discards qualifiers commit cd86684 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Sat Nov 21 12:38:46 2020 +0100 20201121: Snapshot, preserve possibly important debug state commit 5f82a22 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:43:56 2020 +0100 GLGUI: 20201120; Snapshot: alternative implementation - active for a while commit b555356 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 20:58:24 2020 +0100 ANDROID: verbose signing commit 0a58fa3 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 20:55:19 2020 +0100 outdated: srfi-179 port commit b4dac9a Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 20:53:15 2020 +0100 CORE: flow/fix-issue related changes commit ddaa1db Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:42:19 2020 +0100 CORE: flow/fix-issue related changes commit 985ddd5 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:34:57 2020 +0100 CORE: better version of make-list commit e72c158 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:11:35 2020 +0100 TENTATIVE: config: commented out - should become debug option commit 41d480b Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:10:35 2020 +0100 ANDROID: keep checking for API 26 break commit 0186693 Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:07:16 2020 +0100 ANDROID: support install of additional dynamic libraries commit a54d93a Author: Jörg F. Wittenberger <Joerg.Wittenberger@softeyes.net> Date: Fri Nov 20 19:02:34 2020 +0100 ANDROID: keep TODO comment
1 parent 54bc984 commit 7fa9fbc

32 files changed

+352
-4149
lines changed

LNCONFIG.h.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
LambdaNative - a cross-platform Scheme framework
3-
Copyright (c) 2009-2013, University of British Columbia
3+
Copyright (c) 2009-2020, University of British Columbia
44
All rights reserved.
55
66
Redistribution and use in source and binary forms, with or

apps/DemoAndroidLNjScheme/MODULES

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
eventloop ln_glgui lnjscheme webview uiform
1+
eventloop ln_glgui ln_jscheme webview uiform

apps/DemoAndroidLNjScheme/lnjstest.scm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@
77
;; Just to see an error:
88
;;
99
(error "nananana")
10-

loaders/android/AndroidManifest.xml.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
@ANDROID_XML_SERVICES@
2323
@ANDROID_XML_PROVIDERS@
2424
</application>
25-
@ANDROID_XML_PERMISSIONS@
2625
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
26+
@ANDROID_XML_PERMISSIONS@
2727
</manifest>
2828
# eof

loaders/android/bootstrap.java.in

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ import android.content.Intent;
4646
import android.content.IntentFilter;
4747
import android.content.BroadcastReceiver;
4848
import android.content.res.Configuration;
49+
import android.content.pm.PackageManager;
50+
import android.content.pm.PackageInfo;
4951
import android.opengl.GLSurfaceView;
5052
import android.os.Bundle;
5153
import android.os.PowerManager;
@@ -108,6 +110,29 @@ public class @SYS_APPNAME@ extends Activity implements @ANDROID_JAVA_IMPLEMENTS@
108110
return true;
109111
}
110112

113+
public boolean requestAllPermissions() {
114+
@IF_ANDROIDAPI_GT_22@
115+
PackageManager pm = getPackageManager();
116+
try
117+
{
118+
PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS);
119+
String[] requestedPermissions = null;
120+
if (packageInfo != null)
121+
requestedPermissions = packageInfo.requestedPermissions;
122+
123+
if (requestedPermissions != null && requestedPermissions.length > 0)
124+
requestPermissions(requestedPermissions, 1);
125+
}
126+
catch (PackageManager.NameNotFoundException e)
127+
{
128+
System.err.print("requestAllPermissions error: " + e);
129+
e.printStackTrace(System.err);
130+
return false;
131+
}
132+
/* end of IF_ANDROIDAPI_GT_22 */
133+
return true;
134+
}
135+
111136
@Override
112137
public void startActivityForResult(Intent intent, int cont) {
113138
try {
@@ -131,6 +156,7 @@ public class @SYS_APPNAME@ extends Activity implements @ANDROID_JAVA_IMPLEMENTS@
131156
@Override
132157
public void setContentView(android.view.View view) {
133158
if(current_ContentView != view) {
159+
// Note: this is a bit brain dead as it ONLY handles GLSurfaceView
134160
if(current_ContentView instanceof android.opengl.GLSurfaceView) {
135161
((android.opengl.GLSurfaceView)current_ContentView).onPause();
136162
}
@@ -177,8 +203,13 @@ public class @SYS_APPNAME@ extends Activity implements @ANDROID_JAVA_IMPLEMENTS@
177203

178204
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
179205

180-
checkOrRequestPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
181-
// Additions and permissions needed by modules, e.g. gps
206+
requestAllPermissions();
207+
208+
// MUST NOT run before nativeInstanceInit completed
209+
// and MUST NOT run before permission checks
210+
setContentView(current_ContentView==null ? mGLView : current_ContentView);
211+
212+
// Additions needed by modules, e.g. gps
182213
@ANDROID_JAVA_ONCREATE@
183214

184215
// MUST NOT run before nativeInstanceInit completed
@@ -187,6 +218,7 @@ public class @SYS_APPNAME@ extends Activity implements @ANDROID_JAVA_IMPLEMENTS@
187218
// start EVENT_IDLE
188219
if(idle_tmScheduleRate > 0) idle_tm.scheduleAtFixedRate(idle_task, 0, idle_tmScheduleRate);
189220
}
221+
190222
@Override
191223
protected void onDestroy() {
192224
setContentView(mGLView);

make.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,20 @@ compile_payload()
399399
$SYS_RANLIB $tgtlib 2> /dev/null
400400
assertfile "$tgtlib"
401401
echo " == $tgtlib"
402+
# transfering additonal .so's files
403+
if [ "$SYS_PLATFORM" = android ]; then
404+
sofilesdir=`locatedir apps/$SYS_APPNAME/android_sos silent`
405+
if [ -d "$sofilesdir" ]; then
406+
echo " => building additional library files.."
407+
## (cd $sofilesdir; make)
408+
# cp -La $sofilesdir $tmpdir
409+
env
410+
( export SYS_ROOT SYS_PATH SYS_CXX SYS_PREFIX SYS_CC SYS_GSC APP_ABI=$abi SYS_STRIP SYS_PLATFORM_VARIANT
411+
cd $sofilesdir && make SYS_PREFIX=${SYS_PREFIX} INSTALL_DIR=$SYS_PREFIX/lib -r) || exit 1
412+
else
413+
echo "not building additional .so files"
414+
fi
415+
fi
402416
dmsg_make "payload : $tgtlib"
403417
dmsg_make "leaving compile_payload"
404418
}
@@ -1099,6 +1113,7 @@ make_setup_target()
10991113
ac_subst SYS_APPVERSIONCODE
11001114
ac_subst SYS_ANDROIDAPI
11011115
ac_subst IF_ANDROIDAPI_GT_22 "`if [ $SYS_ANDROIDAPI -lt 23 ]; then echo '/* IF_ANDROIDAPI_GT_22 commented out:'; else echo '/* IF_ANDROIDAPI_GT_22 active here:*/'; fi`"
1116+
ac_subst IF_ANDROIDAPI_GT_25 "`if [ $SYS_ANDROIDAPI -lt 26 ]; then echo '/* IF_ANDROIDAPI_GT_25 commented out:'; else echo '/* IF_ANDROIDAPI_GT_25 active here:*/'; fi`"
11021117
ac_subst SYS_ANDROIDSDK
11031118
ac_subst SYS_ANDROIDNDK
11041119
ac_subst SYS_BUILDHASH

modules/camera/ANDROID_java_oncreate

Lines changed: 0 additions & 2 deletions
This file was deleted.

modules/config/config.scm

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ end-of-c-declare
9494
;; repl and simillar situations.
9595
(set! ##exit
9696
(lambda (#!optional (code 0))
97+
#;(println port: (current-error-port)
98+
(call-with-output-string
99+
(lambda (port)
100+
(continuation-capture
101+
(lambda (cont)
102+
(display-exception-in-context code cont port)
103+
(display-continuation-backtrace cont port)))))
104+
"##exit")
97105
((c-lambda (int) void "lambdanative_exit") code)))
98106

99107
(if (not (file-exists? (system-directory)))
@@ -109,7 +117,9 @@ end-of-c-declare
109117

110118
(cond-expand
111119
(android
112-
(define (android-PackageCodePath) ((c-lambda () char-string "android_getPackageCodePath"))))
120+
(define android-FilesDir (c-lambda () char-string "android_getFilesDir"))
121+
(set! system-appdirectory android-FilesDir)
122+
(define android-PackageCodePath (c-lambda () char-string "android_getPackageCodePath")))
113123
(else #!void))
114124

115125
;; Gain access to Android app_directory_files and app_code_path

modules/eventloop/eventloop.scm

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#|
22
LambdaNative - a cross-platform Scheme framework
3-
Copyright (c) 2009-2016, University of British Columbia
3+
Copyright (c) 2009-2020, University of British Columbia
44
All rights reserved.
55

66
Redistribution and use in source and binary forms, with or
@@ -149,9 +149,11 @@ end-of-c-declare
149149
(define (event-push t x y)
150150
(set! event:fifo (append event:fifo (list (list t x y)))))
151151
(define (event-pop)
152-
(if (null? event:fifo) #f
152+
(if (null? event:fifo)
153+
#f
153154
(let ((ret (car event:fifo)))
154-
(set! event:fifo (cdr event:fifo)) ret)))
155+
(set! event:fifo (cdr event:fifo))
156+
ret)))
155157

156158
(define on-jscm-result
157159
(let ((mux (make-mutex 'on-jscm-result)))
@@ -200,8 +202,9 @@ end-of-c-declare
200202
;; handle potential scaling (running stretched on a device)
201203
(hook:event t (if app:scale? (fix (* app:xscale x)) x)
202204
(if app:scale? (fix (* app:yscale y)) y))
203-
)
204-
((fx= t EVENT_JSCM_RESULT) ((on-jscm-result) t x y))
205+
)
206+
((fx= t EVENT_JSCM_RESULT)
207+
((on-jscm-result) t x y))
205208
((fx= t EVENT_INIT)
206209
;; prevent multiple inits
207210
(if app:mustinit (begin

modules/gps/ANDROID_java_oncreate

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@ locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
22
Criteria criteria = new Criteria();
33
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
44
criteria.setAccuracy(Criteria.ACCURACY_FINE);
5-
checkOrRequestPermission(android.Manifest.permission.ACCESS_FINE_LOCATION);
65
} else {
76
criteria.setPowerRequirement(Criteria.POWER_LOW);
87
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
9-
checkOrRequestPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION);
108
}
119
provider = locationManager.getBestProvider(criteria, false);
1210
Location location = locationManager.getLastKnownLocation(provider);

0 commit comments

Comments
 (0)