I haven't found a reliable way to re-create the context and redraw
after deminiaturization or app unhide.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
The NSOpenGLView owns the NSOpenGLContext so we can't just CFRelease
the context. Use [NSOpenGLView releaseGLContext] instead.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
The CVDisplayLink used for synchronizing rendering to the display
refresh rate runs on a separate thread from the main thread.
View callbacks must therefore be serialized. Implement that by
introducing a singleton goroutine that owns the view map and runs
incoming commands.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Delete a redundant loop; dropHandlers already does the required work.
Fixes pointer event issues found after pointer events with no side
effects no longer trigger redraws.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Before this change, there was no guarantee that a PopOp matched
the intended PushOp. With a single stack operation, the client is
forced to match pop with the right push.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Move the Record and Stop methods from Ops to MacroOp itself.
Before this change, Ops.Stop stopped the recording of the most
recent macro, which could be a different macro than intended.
After this change, there is no such confusion.
As a bonus, the Ops API becomes less cluttered.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Rename Insets to the verb Inset for consistency with Align.
Uniform is a better description than Equal for the result of
UniformInset.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Exact was too special and can be expressed with RigidConstraints.
RigidConstraints is a better name ("rigid" was in the comment!)
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Before this change `go list <pkg>` was used to sanitize the import
path of the package argument. That doesn't work well for building
Go source files directly:
gio -target android helloworld.go
where `go list helloworld.go` simply returns "command-line-arguments".
A better way is to leave the package path alone, and compute the
output file separately from the import path, as reported by
`go list -f {{.ImportPath}} <pkg>`.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Replace the StageDead stage with DestroyEvent dedicated to ending
the event loop and, for premature window closes, the error.
Drop the error return from NewWindow; any errors in window creation
will appear as an immediate DestroyEvent with its Err field set.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
Replace CreateWindow with NewWindow that immediately creates a Window
ready to use.
Drop the Windows channel of windows created by the system. For iOS
and Android where the system creates the windows, let them rendezvous
with the window created in the first NewWindow call.
Android is further changed so that destroying and re-creating the
Java Activity simply reconnects with the original Window.
Signed-off-by: Elias Naur <mail@eliasnaur.com>