diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-24 14:12:02 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-24 14:12:02 -0500 |
| commit | 4c6ce9639ffe9a4de3de4c06f8267eb97dcd0951 (patch) | |
| tree | 6a1d40b477396a9ef32acc3605bb147148c9f0c8 | |
| parent | d08ad65c4c8c9b6d896380443591e50996d2a058 (diff) | |
Oh right derp, preferredSize() is running on uitask already; don't use the dispatch channel. Almost working...
| -rw-r--r-- | prefsize_windows.go | 53 |
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... |
