2
0
mirror of synced 2025-02-21 14:08:14 +00:00

576 Commits

Author SHA1 Message Date
Nigel Tao
ef84e0538a app: remove unused windowCreated channel.
Change-Id: Iabe5a9d346ee54ddc4f39475606d262f581b5c63
Reviewed-on: https://go-review.googlesource.com/14667
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-17 03:25:18 +00:00
Nigel Tao
4c15c79e19 app: change EndPaint to Publish.
More than a name change, the painting model changes so that the app, not
the library, is responsible for driving painting. If the app is
animating and wants paint events at 60 Hz, it has to ask for that. If
the app is not animating and doesn't need to update its screen, it
shouldn't get any paint events.

Plenty of TODOs, and this CL doesn't get us to a perfect place, but it
is a checkpoint along the way.

The darwin_*.go code changes were minimal. I don't even have a Mac or
iOS device to test that this even builds. Even so, the TODOs about not
sending paint.Events unconditionally are important TODOs. That's the
whole point of switching to this model. I'll leave the actual
implementation to you (crawshaw).

Out of all the example apps, the change to example/network/main.go is
probably the most interesting.

It seems like there ought to be some way to reduce the copy/paste
between all of the example app code, but I'll leave that for future CLs.

Change-Id: I17e11c06174110c68e17f7183b2d8af19b6a170e
Reviewed-on: https://go-review.googlesource.com/14300
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-17 03:17:09 +00:00
Nigel Tao
11f6745c3d app: process input and other events concurrently, not consecutively.
Previously, we did:

for {
  processEvents() // Process any pending Android input events.
  select {        // Select Go events (channel send/receives).
  etc
  }
}

The problem was that if you were blocked on the select because there
were no incoming Go events, then you weren't reading new input events,
and the UI could block indefinitely.

After this CL, input events are processed in a dedicated goroutine,
where it's fine for

for C.AInputQueue_getEvent(q, &e) >= 0 { etc }

to block, and the main loop deals only with Go channels:

for {
  select {
  etc
  }
}

Change-Id: I8ec27a40e220b1d95a6b6fc14347a59833ccfdc8
Reviewed-on: https://go-review.googlesource.com/14500
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-17 03:05:17 +00:00
David Crawshaw
7a70f37cf6 bind/objc: remove a constructor and retain blocks
A framework generated with gomobile bind -target=ios has two global
constructors: one initializing a data structure and another using it.
These constructors are defined in different translation units, which
(I believe, reasoning from C++ global constructors) means their order
of initialization is undefined.

A capturing block is stack allocated. Its memory is invalid after the
function returns. Make a copy of the interface initializer blocks so
they can be saved to the heap.

Block implementation background:
http://www.cocoawithlove.com/2009/10/how-blocks-are-implemented-and.html

Updates golang/go#12590

Change-Id: Ia7ae9f4bbd8df6e6e79949de54b3e6c48148c700
Reviewed-on: https://go-review.googlesource.com/14549
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-15 17:38:26 +00:00
David Crawshaw
b10f681911 example/ivy/ios: remove unnecessary indentation
Change-Id: Ie4898a25eeb3230be6acb0fb85d2cff636f2880e
Reviewed-on: https://go-review.googlesource.com/14600
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-15 12:59:24 +00:00
David Crawshaw
b0ae6f9325 example/ivy/ios: add iOS source code
Change-Id: Ifabbfcfd75a92b0eb81631e3bb6eca1e4228139a
Reviewed-on: https://go-review.googlesource.com/14208
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-14 21:08:49 +00:00
Hyang-Ah (Hana) Kim
24e7a6212f cmd/gomobile: use ARC when compiling generated objective-c files.
Gobind -lang=objc generates code that assume use of ARC.
Set -fobjc-arc to explicitly enable ARC.

Change-Id: Ib0ec7b19773c112c01ed23cb00f1ec9d64946e6b
Reviewed-on: https://go-review.googlesource.com/14544
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-14 20:55:34 +00:00
Hyang-Ah (Hana) Kim
ffd5bae668 cmd/gomobile: add a dummy Info.plist for happy manual codesign.
Fixes golang/go#12604.

Change-Id: I94e94c32ce42022b58097c349fcbb90edb0a2f13
Reviewed-on: https://go-review.googlesource.com/14543
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-14 20:44:35 +00:00
David Crawshaw
eadadb8667 internal/mobileinit: standardize JNIEnv* access
Replace the direct access to JavaVM* and the global android Context
instance with a function responsible for running attached correctly
to the JVM. This saves having to replicate the logic for attaching an
OS thread to the JVM. While here, check for any unhandled Java
exceptions.

This supersedes cl/11812.

Change-Id: Ic9291fe64083d2bd983c4f8e309941b9c47d60c2
Reviewed-on: https://go-review.googlesource.com/14162
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-14 17:30:52 +00:00
Hyang-Ah (Hana) Kim
65551d85b6 misc/androidstudio: handle missing local.properties.
Fixes golang/go#12543

Change-Id: Ifb91e073ff2ebcba111e279949d5120a77b0dc2d
Reviewed-on: https://go-review.googlesource.com/14475
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-11 20:14:45 +00:00
David Crawshaw
1f77c34859 cmd/gomobile: copy libopenal.so explicitly
Fixes golang/go#12550.

Change-Id: I744729cfd702f0e044eac22858ee746096977665
Reviewed-on: https://go-review.googlesource.com/14474
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-11 14:46:26 +00:00
Burcu Dogan
c76d5c8830 exp/sensor: remove the manager type
The manager type is not required, because the APIs don't allow
more than one event sources as they used to. In this CL, I am
flattening out the underlying implementations by removing the
manager type.

Change-Id: I3b606ac160b9cecd85cb657e3df1d7d789604764
Reviewed-on: https://go-review.googlesource.com/14293
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-04 16:23:41 +00:00
Burcu Dogan
043428404d exp/sensor: enable magnetometer on darwin{arm,arm64}
Change-Id: Ib188121501ac96cb8743e57f907b23d0fdfc37a0
Reviewed-on: https://go-review.googlesource.com/14292
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-04 04:58:24 +00:00
Burcu Dogan
d4f6353bc3 exp/sensor: support gyro events on darwin{arm,arm64}
Change-Id: I47aa12cc942261b8035312d0eeba0caf52b562ac
Reviewed-on: https://go-review.googlesource.com/14257
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-04 03:40:30 +00:00
Burcu Dogan
931e394f4f exp/sensor: don't allow delays smaller than 10ms on ios
"You can set the reporting interval to be as small as 10 milliseconds
(ms), which corresponds to a 100 Hz update rate, but most app operate
sufficiently with a larger interval."

from https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/motion_event_basics/motion_event_basics.html

Larger delay values makes the library poll more frequently than needed.

Change-Id: Ie3057813209746bff00b8ef534c9ae239396366e
Reviewed-on: https://go-review.googlesource.com/14252
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-03 16:03:29 +00:00
David Crawshaw
70b9ad3e00 .gitignore: remove *.xcodeproj
I'm about to add one to the tree.

Change-Id: Iad25d8965d1095349588e11a5050f986e5ad2e76
Reviewed-on: https://go-review.googlesource.com/14260
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-03 14:46:33 +00:00
Burcu Dogan
7e79d05d9e exp/sensor: set sensor interval on ios
Change-Id: I5559f721b2e2c7506db89f804569c0b0f78abea8
Reviewed-on: https://go-review.googlesource.com/14251
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-03 06:02:53 +00:00
Burcu Dogan
679c68b58d exp/sensor: block forever until new events occur on android
The former Reader inspired APIs were designed to timeout if no events
occur after an excessive amount of time. As we switch to the app
event based model, timing out is not required. We can block on
pollAll forever until new events arrive.

Change-Id: I086fc908ebfe6ae9bd96ce9199636ad0242bbec5
Reviewed-on: https://go-review.googlesource.com/14223
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-03 02:54:22 +00:00
Burcu Dogan
5651add1eb exp/sensor: initiate the darwin/{arm,arm64} backend
The CL provides accelerometer events only, upcoming CLs will add
support for gyroscope and magnetometer.

Change-Id: Ib5629ca7c49c9dfc8ca533fe7acde371efc102b2
Reviewed-on: https://go-review.googlesource.com/14036
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-03 02:10:28 +00:00
Hyang-Ah (Hana) Kim
9e2ad8c60e example/ivy/android: configure version code/name (3/1.0.2)
Change-Id: I378f41a54c7bb6cf81988c344a086e6a506e9dfe
Reviewed-on: https://go-review.googlesource.com/14202
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-02 21:16:25 +00:00
Hyang-Ah (Hana) Kim
e565eadcd6 example/ivy/android: fix problems caused by old bugs in WebView.
1) Clear button did not shrink the WebView size. It's an old bug in
Android WebView, and fixed recently (android-L, maybe). This CL avoids
the problem by replacing the webview with a freshly allocated new webview
object. It's heavy-weight, but the Clear event should be rare.

2) ScrollToBottom from the java side and the java script side interacted
strangely and prevented long results from displayed properly.

Also,

- now the gomobile bind generates the Java class in the
org.golang.ivy package. (ivy/build.gradle)

- modified the javascript in tape.html so long result texts are not
shortened initially. (tape.html)

Change-Id: I60660f3392cf17719daad4af89e05c2d82788175
Reviewed-on: https://go-review.googlesource.com/14201
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-02 14:49:09 +00:00
David Crawshaw
471eeebd99 cmd/gomobile: always display stdout from abd
Fixes golang/go#12418

Change-Id: Ie0f2e669b3e516787b548c69a624e9063cd7f68f
Reviewed-on: https://go-review.googlesource.com/14160
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-02 14:17:25 +00:00
Hyang-Ah (Hana) Kim
fee22db634 example/ivy/android: initial check in.
This version is not yet released to Play store.
Compared to the version in the play store

- fixed the reappearing keyboard bug
- allows app install on SD card
- when demo is enabled, the demo mode message is displayed
- when demo is enabled, the submit action button appears next to the
  edit text.
- use robpike.io/ivy/mobile instead of the wrapper in my personal repo.
- the demo script read code was moved from go to java.
- use the up-to-date help message retrieved with mobile.Help.
- textview was replaced with webview with javascript.

TODO: the app built from this code doesn't work in old android devices.
Next cl will fix it.

TODO: build instruction - not very different from
golang.org/x/mobile/example/bind/android.

Change-Id: Ifb594b79f31091b6864ec3e0d8dbaff7986a5afc
Reviewed-on: https://go-review.googlesource.com/13870
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-02 05:29:24 +00:00
Hyang-Ah (Hana) Kim
4a6caa5fd7 cmd/gomobile: bind allows custom package path/prefix.
New option -javapkg for -target=android, and -prefix for -target=ios.
Fixes golang/go#9660.

Change-Id: I9143f30672672527876524b38f450629452a3161
Reviewed-on: https://go-review.googlesource.com/14023
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-01 19:17:05 +00:00
Meir Fischer
00865a642f bind: improve readability for float default values
To improve readability for default numeric types
represented as strings, use 0.0 for floating point types.
(No tests make use of this change so golden update
not necessary; not significant enough for new test/test mod.)
Fix spelling on error statement; this was the only
instance of that spelling error in the repository.

Change-Id: I373890725b33da11c6780ba93674d89541bf758c
Reviewed-on: https://go-review.googlesource.com/13645
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-09-01 18:16:37 +00:00
Burcu Dogan
9ddeada810 exp/sensor: provide sensor events from the app event channel
We are also limiting the number of sensor managers to one.
The application provide sensor events to third-party packages
by consuming them in the main.

An application will be able to consume the sensor events similar
to the other events.

package main

func main() {
  app.Main(func(a app.App) {
    // enables the accelerometer
    sensor.Enable(a, sensor.Accelerometer, 100*time.Millisecond)

    var sz size.Event
    for e := range a.Events() {
      switch e := app.Filter(e).(type) {
      case sensor.Event:
        log.Println(e)
      }
    }
  })
}

Change-Id: Iaad1c59f8d2322c7620df62ed9b9283c91746fa8
Reviewed-on: https://go-review.googlesource.com/13983
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-09-01 04:44:55 +00:00
Nigel Tao
b5b6051b23 event/size: add an Event.Size method.
This is similar to the Event.Bounds method. Some functions in other
packages take an image.Rectangle (i.e. bounds), others take an
image.Point (i.e size).

Change-Id: Ie892a8902992d4e6b9edfbf6d12342297fae4068
Reviewed-on: https://go-review.googlesource.com/14003
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-09-01 00:58:08 +00:00
Hyang-Ah (Hana) Kim
671f57b233 bind: fix interface methods' multiple return values handling.
Fixes golang/go#12403

Change-Id: I9b8e6d69beb1ceb27e991348212acb5054497e47
Reviewed-on: https://go-review.googlesource.com/14077
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-31 16:32:47 +00:00
David Crawshaw
0c8c4ad3bc cmd/gomobile: revert dex change made in 54c0a36
There is no change to GoNativeActivity.java in cl/14039, so there
should be no change to the generated dex file. Confirmed with go
generate in a clean client.

Change-Id: I37ad615716d6ab6cd6e492b2145e1a71228f79ae
Reviewed-on: https://go-review.googlesource.com/14078
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-31 13:19:12 +00:00
Burcu Dogan
54c0a36309 cmd/gomobile: *.aar and *.framework files are libraries
It seems like shared library terminology has left as a legacy
from the days bind command only supported Android and bind was
generating shared libraries as an output.

Additionally, rewording the mention of apks and apps.
These libraries aren't generated for apk or apps but Android IDE
or Xcode projects.

Change-Id: I46dd56ddccde2d2526fa9b69f700c48c5dd474db
Reviewed-on: https://go-review.googlesource.com/14039
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-31 05:15:54 +00:00
Burcu Dogan
1b518ad9d6 cmd/gomobile: capitalize the app name on android
Fixes golang/go#12376.

Change-Id: Ibc48d309a6f15953939550c271033d889721553c
Reviewed-on: https://go-review.googlesource.com/13982
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-28 15:23:09 +00:00
Hyang-Ah (Hana) Kim
c384607ef3 bind: support for custom java package name and objective-c prefix.
Introduce options -javapkg and -prefix for gobind command.

The following generates java class Testpkg with package name com.example.

gobind -lang=java -javapkg=com.example testpkg

The following generates objective-c files where function and type names
are prefixed with ExampleTestpkg.

gobind -lang=objc -prefix=Example testpkg

As discussed in golang/go#9660 and golang/go#12245.

Gomobile support is not yet implemented.

Change-Id: Ib9e39997ce915580a5a2e25643c0c28373f27ee1
Reviewed-on: https://go-review.googlesource.com/13969
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-28 13:57:06 +00:00
David Crawshaw
4628c38e0f bind: handle unimplementable interfaces
Fixes golang/go#12330

Change-Id: I1568d04b7e48242105a7028ca471e2138f684eeb
Reviewed-on: https://go-review.googlesource.com/13946
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-27 21:36:14 +00:00
Hyang-Ah (Hana) Kim
ac03bee8c3 exp/sprite/portable: fix broken build
Change-Id: I4eb6dc6a98366ad978f9fa2367b518ccfffee363
Reviewed-on: https://go-review.googlesource.com/13970
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-27 17:25:15 +00:00
David Crawshaw
11fe695b54 bind: support fields with type error
Fixes golang/go#12328

Change-Id: I42872d26acb1c44522a64405cfa2d0f10fb24485
Reviewed-on: https://go-review.googlesource.com/13919
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-26 20:25:55 +00:00
David Crawshaw
905c19f8c0 internal/mobileinit: remove format string warning
Change-Id: I9b0e9680395dcfdf0e6c03a5847ea619e570a2ed
Reviewed-on: https://go-review.googlesource.com/13918
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-25 16:39:13 +00:00
Hyang-Ah (Hana) Kim
da28dd9045 bind/objc: fix error return type handling
Fixes golang/go#12307.

Change-Id: I5560b616a3cd51c536d9e5529745681effe26e9a
Reviewed-on: https://go-review.googlesource.com/13913
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-25 15:22:55 +00:00
Hana Kim
979ebcea99 cmd/gomobile: make test pass in windows.
Change-Id: I189524ddf853b9fd0c5510878cfb2cf33b973345
Reviewed-on: https://go-review.googlesource.com/13875
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-24 21:39:25 +00:00
Hana Kim
49a82fefe3 all: support go get golang.org/x/mobile/... on Windows
Fixes golang/go#12212
Workaround for golang/go#12261 until golang/go#9306 is fixed.

Change-Id: I51c1bcfc92c1553fe2132586a0234b1c1af6aeb1
Reviewed-on: https://go-review.googlesource.com/13745
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-24 21:09:04 +00:00
David Crawshaw
48bd7cbbc7 bind: adjust invalid java package names
Updates golang/go#12273

Change-Id: I8eac3e84d5a473e9ffe45705cea88537573aef61
Reviewed-on: https://go-review.googlesource.com/13873
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-24 21:08:09 +00:00
David Crawshaw
8bf23706cf cmd/gomobile: only install app pkgs on darwin
Unfortunately GLES is not a common package for a linux desktop
to have installed. To avoid bind-based users having to jump
through the hoop of installing GL, disable this performance
optimization on linux for now.

Change-Id: Ic00baef6237dca360f191ec291b6c165eda7ad6e
Reviewed-on: https://go-review.googlesource.com/13874
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-24 21:04:37 +00:00
David Crawshaw
128f53db6d cmd/gomobile: install common dev packages
I often forget to do this. I can't be the only one.

Change-Id: Ia5dfaa6811242758f996de614f80cb42badf327b
Reviewed-on: https://go-review.googlesource.com/13742
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-24 16:01:42 +00:00
Hyang-Ah Hana Kim
f9f0ffafe3 cmd/gomobile: reset readonly bits of downloaded files in Windows
os.Rename in init fails in Windows for various reasons. One of them
is the temporary files extracted from NDK, OpenAL archives. For
some reason, some of them have read-only properties.
(golang/go#12212)

> gomobile init
gomobile: rename
 C:\Users\foo\pkg\gomobile\work-427911983\openal\include\AL
 C:\Users\foo\pkg\gomobile\android-ndk-r10e\arm\sysroot\usr\include\AL:
 Access is denied.

We reset the read-only bits of all the extracted files.

Change-Id: Ib958cbedf1b7527ecb5b9318f23fe9437dc7c241
Reviewed-on: https://go-review.googlesource.com/12970
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-24 13:08:21 +00:00
Nigel Tao
f4bcb3cc2e exp/sensor: fix nsec to usec conversion.
Also remove an unnecessary constant type conversion.

Change-Id: Iff466553fac450bd531785f4fb4e2be97a991a52
Reviewed-on: https://go-review.googlesource.com/13715
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-08-21 01:49:41 +00:00
Nigel Tao
3a0fcd575e event/key: make Event implement fmt.Stringer.
Change-Id: I453bed283767e0adf5efd271b329a469c0073d69
Reviewed-on: https://go-review.googlesource.com/13733
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-21 01:21:32 +00:00
David Crawshaw
ab223cffc9 internal/mobileinit: send iOS logs to ASL
Fixes golang/go#12194

Change-Id: I9ff771336996c19ca43da56e3f8944e79c980a2b
Reviewed-on: https://go-review.googlesource.com/13703
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-20 14:33:19 +00:00
Nigel Tao
e959dea03d event/key: implement Code.String, via stringer.
Change-Id: I4acf4f351a30ee64192ed9f896ca31d29fe0397f
Reviewed-on: https://go-review.googlesource.com/13712
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-08-19 23:59:47 +00:00
Tim Cooijmans
78ac81ee2f cmd/gomobile: Fix issue in init when downloading full NDK.
Fixes an issue where the full NDK could not be downloaded due to a missing execute permission.

Fixes golang/go#12208

Change-Id: I6f432b5021b082693a02a293f50caf6da4d4e379
Reviewed-on: https://go-review.googlesource.com/13669
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-19 19:55:24 +00:00
David Crawshaw
9308ad61ea app: android key code mapping to USB HID codes
Change-Id: I1225f51fd06a5f9a9f0fdf09096982df761b5a51
Reviewed-on: https://go-review.googlesource.com/13678
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-08-19 14:09:33 +00:00
David Crawshaw
b5d916ab12 exp/gl/glutil: extra context error checking
Hoping to learn more so I can debug or replicate the darwin/amd64
builder failure, which is not creating a GL context.

Change-Id: I9f2fe54fbd9a072c65cd37c3b711554d4c71171f
Reviewed-on: https://go-review.googlesource.com/13693
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-08-18 19:25:21 +00:00