2
0
mirror of synced 2025-02-24 07:18:15 +00:00

422 Commits

Author SHA1 Message Date
David Crawshaw
9cc656ecd6 app: darwin/amd64 event model implementation
Change-Id: I16d706131508bd27415f26c6bbb64210e0af2819
Reviewed-on: https://go-review.googlesource.com/11620
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-27 19:19:22 +00:00
Nigel Tao
42f0d17876 app: use one thread for both GL and other UI C code.
This change will break Darwin. I have only built and tested this on
desktop linux and Android linux. A follow-up CL will fix Darwin.

Currently, OpenGL gets its own thread, and UI C code (e.g. the Android
event loop, or the X11 event loop) gets its own thread. This relies on
multiple system-provided UI-related C libraries working nicely together,
even when running on different threads. Keeping all the C code on the
one thread seems more sound.

As side-effects:
  - In package app/debug, DrawFPS now takes an explicit Config.
  - In package app, some callbacks now take an explicit Config.
  - In package exp/sprite, Render now takes an explicit Config.
  - In package event, there are new events (Config, Draw, Lifecycle),
    and an event filter mechanism to replace multiple app Callbacks.
  - In package geom, the deprecated Width, Height and PixelsPerPt global
    variables were removed in favor of an event.Config that is
    explicitly passed around (and does not require mutex-locking).
    Converting a geom.Pt to pixels now requires passing a pixelsPerPt.
  - In package gl, the Do, Start and Stop functions are removed, as well
    as the need to call Start in its own goroutine. There is no longer a
    separate GL thread. Instead, package app explicitly performs any GL
    work (gl.DoWork) when some is available (gl.WorkAvailable).
  - In package gl/glutil, Image.Draw now takes an explicit Config.

Callbacks are no longer executed on 'the UI thread'.

Changing the app programming model from callbacks to events (since a
channel of events works with select) will be a follow-up change.

Change-Id: Id9865cd9ee1c45a98c613e9021a63c17226a64b1
Reviewed-on: https://go-review.googlesource.com/11351
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-26 07:43:17 +00:00
Burcu Dogan
0a8a8b8cb6 exp/audio/al,cmd/gomobile: fix the broken build
Change-Id: Ia2da7d987f253c11a62843f54051c9d18c1612b5
Reviewed-on: https://go-review.googlesource.com/11521
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-26 07:40:05 +00:00
Burcu Dogan
25dc511cde exp/audio: allow multiple instances of al.Context
Fixes golang/go#11299.

Change-Id: Ie59981a0515abcf015c7b22d05d2cdbb8be35f56
Reviewed-on: https://go-review.googlesource.com/11315
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-26 06:57:01 +00:00
Burcu Dogan
95c05c6dfd cmd/gomobile: parse -target and -o
Fixes golang/go#11337.

Change-Id: I324f0c4482476b6f2b084828625fd53b8f802a23
Reviewed-on: https://go-review.googlesource.com/11480
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-26 04:37:57 +00:00
Nigel Tao
e47fb7683e app: delete the unused Config.ClassFinder method.
Change-Id: I8eea69f3ac6406fd58a9338f3aa358fead1afc0e
Reviewed-on: https://go-review.googlesource.com/11473
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-26 01:34:58 +00:00
Nigel Tao
0dbccd26eb gl: delete an unused global variable.
Change-Id: I0591a27da24a5d7eca9055db5960164eae42dfcd
Reviewed-on: https://go-review.googlesource.com/11476
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-26 01:22:12 +00:00
Burcu Dogan
e9833322dc Revert "cmd/gomobile: build *.app files if target=ios"
This reverts commit 597df59d36d6b5a9e4bfec918053495d750fa2dd.

Reverting the change since, runtime/cgo is still not buildable and CCFLAGS is not a valid env variable. See golang/go#11339 for more information.

Change-Id: I2f168508d1ca72f5c75ff641938fd3b304939617
Reviewed-on: https://go-review.googlesource.com/11453
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-25 17:14:22 +00:00
Hyang-Ah (Hana) Kim
3ebbe2de54 cmd/gomobile: fix the path of the audio package.
The audio package has been moved.
The path used to determine whether to include openal in apk needs to
be updated.

Change-Id: Ic368617763e1991b0e82172c199e8f4318f115dc
Reviewed-on: https://go-review.googlesource.com/11500
Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-06-25 13:10:31 +00:00
Nigel Tao
96bcad7e98 example/audio: delete obsolete TODO.
Change-Id: I6245a48a45fd1631550bb4102734a41e06fafcba
Reviewed-on: https://go-review.googlesource.com/11471
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-06-25 00:36:49 +00:00
Nigel Tao
229b9af752 exp/sprite/portable: unbreak test.
The test was broken with the foo -> exp/foo move.

Change-Id: Ie2bdf54f6da0365d2e0332bcacdd2b7a000c950c
Reviewed-on: https://go-review.googlesource.com/11392
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-24 23:49:55 +00:00
Burcu Dogan
597df59d36 cmd/gomobile: build *.app files if target=ios
This CL will be followed by another change to remove the
misc/ios/clangwrapper.sh dependency.

Updates golang/go#11043.

Fixes golang/go#11339.

Change-Id: I82466f8d845945935ab82d3d0b75f5af9e1ef3ec
Reviewed-on: https://go-review.googlesource.com/11345
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-24 20:21:15 +00:00
James Schofield
5878957524 mobile/bind: Fix objc bindings for multiple return vals.
The existing implementation generates uncompilable objc code for
functions returning two results.

Change-Id: I13f7329596d8fa6103c4b7827c26c5461e16a925
Reviewed-on: https://go-review.googlesource.com/11364
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-24 18:25:43 +00:00
Hyang-Ah (Hana) Kim
f770de8d07 cmd/gomobile: change the generated go file name
This prevents filenames like go_test.go (when the package name is test)
or go_windows.go (wen the package name is windows).

Change-Id: Iae8f549d4d73baac8f8ba2ea33be7fec83f0023a
Reviewed-on: https://go-review.googlesource.com/11305
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-23 13:25:24 +00:00
Hyang-Ah (Hana) Kim
3a9b5b50ac bind: correct methods' return arg type mapping in obj-c binding.
Change-Id: Ieda05982c7f894c5603103b8890658e682e97423
Reviewed-on: https://go-review.googlesource.com/11307
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-23 13:13:31 +00:00
Nigel Tao
4d3dd47e87 app/debug: use the *image.RGBA drawing fast path.
On my 2013 Nexus 7, a simple

start := time.Now()
draw.Draw(etc)
log.Printf("draw.Draw took %v", time.Since(start))

around the draw.Draw call dropped from 12ms to 30µs.

Change-Id: I12aea4a4ade07eedb8ee86f7c8d4a4ed49f39f36
Reviewed-on: https://go-review.googlesource.com/11299
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-23 04:51:34 +00:00
Burcu Dogan
4d8c316cd9 cmd/gomobile: fix the aar suffix check
Change-Id: Iecfa5326b4b2e234fbbd9e4d1815cf782035efbf
Reviewed-on: https://go-review.googlesource.com/11310
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-22 12:42:51 +00:00
Burcu Dogan
d1e00c1c1c doc: fix whitespace between stable and exp packages
Markdown acts weirdly at puts more whitespace around the audio
package if there is no other content seperating the lists.

Change-Id: Ia60c0ea05ab2d86b9b0cbcbabccdeebda8c13cbf
Reviewed-on: https://go-review.googlesource.com/11314
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-22 00:54:25 +00:00
Burcu Dogan
55faa67276 doc: list sensor and audio package as experimental
Change-Id: Ib0834fd74d412e8ddc01f30eca72557799d33aeb
Reviewed-on: https://go-review.googlesource.com/11313
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-21 18:25:00 +00:00
Burcu Dogan
1d641b5393 audio: move to exp/audio
Change-Id: I8640b1a38a292972db6dd00506e38c89470b2c15
Reviewed-on: https://go-review.googlesource.com/11311
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-21 18:18:56 +00:00
Burcu Dogan
e9faa8965b sensor: move to exp/sensor
Change-Id: I707a1555952355ccdd5e851062c4749dc94544eb
Reviewed-on: https://go-review.googlesource.com/11312
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-21 07:47:51 +00:00
Nigel Tao
c0c696a96d sprite: move to exp/sprite.
Change-Id: Idfdc0c192d7e6d50e1063b2eb582bbe05294643a
Reviewed-on: https://go-review.googlesource.com/11230
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-21 03:08:52 +00:00
Burcu Dogan
df4a6521ad cmd/gomobile: improve error message if gomobile hasn't inited
gomobile init builds and install the toolchain for iOS builds now.
The error message shouldn't exclude the darwin/arm and darwin/arm64
related initialization.

Change-Id: Iebd5d7fb1466d9be694d8848c0fd8fa782850c79
Reviewed-on: https://go-review.googlesource.com/11239
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-20 22:31:06 +00:00
Burcu Dogan
8fff803af0 mobile/cmd/gomobile: install darwin/arm and darwin/arm64 compilers
Change-Id: I16fe8db9ac9e22c7ba9c821b4d8bf858ab28f5f8
Reviewed-on: https://go-review.googlesource.com/11237
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-20 18:09:14 +00:00
Hyang-Ah (Hana) Kim
7319e3567c cmd/gomobile: use package dir basename as app name.
Fixes golang/go#11218

Change-Id: I5faee5853170b7a53543d950801ccbf9265e60b1
Reviewed-on: https://go-review.googlesource.com/11251
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-19 19:39:56 +00:00
Hyang-Ah (Hana) Kim
1edfb833a0 cmd/gomobile: fix the use of diff function.
The params order matters in diff function's output.
Related to the confusing error report seen in golang/go#11297

Change-Id: Ibde615dbe43a4393232b72230fb21d7b577c0812
Reviewed-on: https://go-review.googlesource.com/11258
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-06-19 18:47:43 +00:00
Hyang-Ah (Hana) Kim
b97afd068d cmd/gomobile: fix the broken build test.
The golden output for build test was generated assuming GOPATH == HOME.

Change-Id: I7dbf292b66e2ba999cbdc1e288ddb60767b0835b
Reviewed-on: https://go-review.googlesource.com/11257
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-19 18:15:02 +00:00
David Crawshaw
fb3a660302 cmd/gomobile: fix test broken in cl/11265
Change-Id: Ia431f061fd10aad17b53e2b0ef12fd15eaf8795d
Reviewed-on: https://go-review.googlesource.com/11255
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-06-19 17:38:45 +00:00
David Crawshaw
10a37afdaf cmd/gomobile: add -target flag
Also add a very simple test for gomobile build, some
documentation cleanup, and the -o flag for bind.

Change-Id: I719b92010ba2a5813049827c99502828788611ef
Reviewed-on: https://go-review.googlesource.com/11253
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-19 17:31:29 +00:00
Burcu Dogan
6490f64aef mobile/cmd/gomobile: build darwin/arm and darwin/arm64 cross compilers
Change-Id: If79c591ba81319947cd4073bacf009d3a5a7bf4a
Reviewed-on: https://go-review.googlesource.com/11265
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-19 17:22:34 +00:00
Burcu Dogan
090698ee2b mobile/cmd/gomobile: remove the temp iOS work directory
Change-Id: I1ceb859fb35d1069ed4d3835f74f7ec082bfefb8
Reviewed-on: https://go-review.googlesource.com/11264
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-19 16:33:59 +00:00
Burcu Dogan
2813ddb570 mobile/cmd/gomobile: add the assets to the iOS Release build
Updates golang/go#11043.

Change-Id: Ied1a2a4842dc0078dc34da1266c11eec9acba114
Reviewed-on: https://go-review.googlesource.com/11263
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-18 22:13:25 +00:00
Nigel Tao
981e383923 font: move to exp/font.
Change-Id: I62d5bcd829cb35e13843586b25829938778c79f5
Reviewed-on: https://go-review.googlesource.com/11133
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-16 21:35:30 +00:00
Nigel Tao
93e2526d55 exp: add a new directory for experimental packages.
Change-Id: I80ebfa6c7e79c1985262fe1572a927ce60df6946
Reviewed-on: https://go-review.googlesource.com/11118
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-16 21:06:44 +00:00
Nigel Tao
f88f8237ec build: delete obsolete files.
Change-Id: If7e24f3d363e66856f2fbc068615fa95d2e33b04
Reviewed-on: https://go-review.googlesource.com/11005
Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-06-13 04:52:19 +00:00
Burcu Dogan
addf80de0c mobile/cmd/gomobile: invoke Xcode toolchain to build an iOS app
Currently, we don't allow user to override xcodebuild args, we may
introdude a new go build flag such as `xcodebuildargs` to pass
additional flags.

Updates #11043.

Change-Id: I776b332c2af3d9640a7c5f23ab7bc7b19a5e408a
Reviewed-on: https://go-review.googlesource.com/10990
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-13 01:48:29 +00:00
Burcu Dogan
428b72be66 mobile/cmd/gomobile: create boilerplate Xcode project
This CL adds the generation of a boilerplate Xcode project
to make it possible to shell out to xcodebuild to make a
release build.

In order to support multiple architectures, we are using lipo tool to
create fat binaries that target both darwin/arm and darwin/arm64.

This build strategy will require a darwin host with Xcode CLI tools
installed.

Updates #11043.

Change-Id: I741b05f5e34bf2a90103b1efdfa2db97a743e2a6
Reviewed-on: https://go-review.googlesource.com/10813
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-12 17:06:52 +00:00
Hyang-Ah (Hana) Kim
d7fb1ce757 bind: fix a bug in handling func returning a struct.
Change-Id: I63963c20c283638cfdc86b037f6aff70a115a78c
Reviewed-on: https://go-review.googlesource.com/10893
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-11 17:32:32 +00:00
David Crawshaw
31aaa72f51 cmd/gomobile: add x86
Change-Id: I080182bf6d32c18e9713eefcf67930b44ee3b83b
Reviewed-on: https://go-review.googlesource.com/10914
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-11 17:07:53 +00:00
Jihyun Yu
df8025159b app: move x11 API calls to GL thread
x11/gl is not thread-safe, so all x11/gl related API should be called
from one thread. There's already a dedicated thread for GL calls, so
move all x11 API calls to GL thread using gl.Do(...)

Fixes golang/go#11066

Change-Id: If84a8d56e978ce30d7fbbc310740fcc794ce61d7
Reviewed-on: https://go-review.googlesource.com/10744
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-06-11 16:42:09 +00:00
David Crawshaw
4ad40f4216 cmd/gomobile: use -buildmode=c-shared
Change-Id: I427a076a8064be0a73830a37aa40f4eca8bdfda6
Reviewed-on: https://go-review.googlesource.com/10894
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-10 19:38:36 +00:00
Hyang-Ah (Hana) Kim
9c7482eec9 bind/objc: use gobind -lang=objc,go to generate code.
Removed checked-in version of go, objective-c proxy code.

Change-Id: Iac2c6ba3156def680746b5ae1fe02d6e712532a7
Reviewed-on: https://go-review.googlesource.com/10842
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-10 00:17:26 +00:00
Hyang-Ah (Hana) Kim
26f6ffe0b5 cmd/gobind: add experimental, objective-C code generation option.
Change-Id: Ia0e66ee0964bd40d868261994f7cb70260f3cbe9
Reviewed-on: https://go-review.googlesource.com/10841
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-10 00:14:20 +00:00
Hyang-Ah (Hana) Kim
8f4eb9eb49 bind: add objective-c code generator.
Translate error type to NSError.
Interface type is not supported yet.

Change-Id: I54abba2360cff41ef8ca08063b0120e7edd65a47
Reviewed-on: https://go-review.googlesource.com/10793
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
2015-06-09 20:58:21 +00:00
Hyang-Ah (Hana) Kim
1f1d6efd3f app: use more obscure names for objective-c classes.
Change AppDelegate, AppController to GoAppAppDelegate,
GoAppAppController - which are ugly enough so gobind users
is unlikely to use in their objective-c code.

Change-Id: I69305994a83405a1d8499df661bd5f63757a7fd6
Reviewed-on: https://go-review.googlesource.com/10852
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-09 20:50:37 +00:00
Hyang-Ah (Hana) Kim
b6fda3dde1 app: fix broken build for armx.
Change-Id: I8cebd1fc3bd4cbc3113ea032d6d28177a1f31362
Reviewed-on: https://go-review.googlesource.com/10804
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-08 20:57:53 +00:00
Burcu Dogan
10cf0275e0 mobile/app: remove the callbacks declaration in the darwin/arm backend
Change-Id: I3dc03f63b9bb7ed0bd6f771bad8ac75f0cddbe35
Reviewed-on: https://go-review.googlesource.com/10127
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-08 06:10:58 +00:00
Hyang-Ah (Hana) Kim
343eae7dd2 bind/objc: simplify reference counting of Go objects.
With https://go-review.googlesource.com/10638, the reference counting
of Go objects can be simplified. Everytime a Go object is passed into
Objective-C side, a new proxy object with GoSeqRef is created.
Deallocation of a GoSeqRef decrements the reference counter of the
corresponding Go object.

Test the Go object is collected.

Note: It's possible to reduce the number of GoSeqRef
allocations by maintaining a map of weak references to the existing
GoSeqRef, but for now, we allocate a new GoSeqRef instance.

Change-Id: I57a5a4b249c5800d9eba95d128a2cdf74bbef566
Reviewed-on: https://go-review.googlesource.com/10639
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
2015-06-04 23:02:01 +00:00
Hyang-Ah (Hana) Kim
b24fa8f869 bind/objc: add read/write Int and BOOL values.
Change-Id: I9e1d0c62acfa43cfc1b0dd79ff25b89b43a891cb
Reviewed-on: https://go-review.googlesource.com/10710
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-06-04 20:31:20 +00:00
David Crawshaw
1927b21e90 app: add sync import
Fixes golang/go#11054.

Change-Id: If915f67d35639fc31cbe220872186a69c34710b5
Reviewed-on: https://go-review.googlesource.com/10700
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-06-04 18:00:18 +00:00