summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-02-24 14:12:02 -0500
committerPietro Gagliardi <[email protected]>2014-02-24 14:12:02 -0500
commit4c6ce9639ffe9a4de3de4c06f8267eb97dcd0951 (patch)
tree6a1d40b477396a9ef32acc3605bb147148c9f0c8
parentd08ad65c4c8c9b6d896380443591e50996d2a058 (diff)
Oh right derp, preferredSize() is running on uitask already; don't use the dispatch channel. Almost working...
-rw-r--r--prefsize_windows.go53
1 files changed, 17 insertions, 36 deletions
diff --git a/prefsize_windows.go b/prefsize_windows.go
index 3ccc781..2580b50 100644
--- a/prefsize_windows.go
+++ b/prefsize_windows.go
@@ -66,49 +66,30 @@ println("size of control", s.ctype)
var tm _TEXTMETRICS
var baseX, baseY int
- ret := make(chan uiret)
- defer close(ret)
println("calling getWindowDC")
- uitask <- &uimsg{
- call: _getWindowDC,
- p: []uintptr{uintptr(s.hwnd)},
- ret: ret,
+ r1, _, err := _getWindowDC.Call(uintptr(s.hwnd))
+println("getWindowDC",r1,err)
+ if r1 == 0 { // failure
+ panic(err) // TODO return it instead
}
- r := <-ret
-println("getWindowDC",r.ret,r.err)
- if r.ret == 0 { // failure
- panic(r.err) // TODO return it instead
- }
- dc = _HANDLE(r.ret)
+ dc = _HANDLE(r1)
println("getTextMetrics")
- uitask <- &uimsg{
- call: _getTextMetrics,
- p: []uintptr{
- uintptr(dc),
- uintptr(unsafe.Pointer(&tm)),
- },
- ret: ret,
- }
- r = <-ret
-println("getTextMetrics",r.ret,r.err)
- if r.ret == 0 { // failure
- panic(r.err) // TODO return it instead
+ r1, _, err = _getTextMetrics.Call(
+ uintptr(dc),
+ uintptr(unsafe.Pointer(&tm)))
+println("getTextMetrics",r1,err)
+ if r1 == 0 { // failure
+ panic(err) // TODO return it instead
}
baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference has better way
baseY = int(tm.tmHeight)
println("releaseDC")
- uitask <- &uimsg{
- call: _releaseDC,
- p: []uintptr{
- uintptr(s.hwnd),
- uintptr(dc),
- },
- ret: ret,
- }
- r = <-ret
-println("releaseDC",r.ret,r.err)
- if r.ret == 0 { // failure
- panic(r.err) // TODO return it instead
+ r1, _, err = _releaseDC.Call(
+ uintptr(s.hwnd),
+ uintptr(dc))
+println("releaseDC",r1,err)
+ if r1 == 0 { // failure
+ panic(err) // TODO return it instead
}
// now that we have the conversion factors...