: lookup-method ( selector -- method )
dup ?lookup-method [ ] [ no-objc-method ] ?if ;
-: selector/sender ( selector method -- alien word )
- [ <selector> selector ] [ message-senders get at ] bi* ;
-
-: when-method ( receiver selector quot: ( receiver selector method -- ) -- )
- [ dup ?lookup-method ] dip [ selector/sender ] prepose [ 2drop ] if* ; inline
+: selector/sender ( selector -- alien word )
+ dup lookup-method
+ [ <selector> selector ]
+ [ message-senders get at ] bi* ;
MEMO: make-prepare-send ( selector method super? -- quot )
[
METHOD: void prepareOpenGL [
- self "setWantsBestResolutionOpenGLSurface:" [
- 1 swap execute( x x x -- )
- ] when-method
+ os-version { 10 7 0 } after=? [
+ self "setWantsBestResolutionOpenGLSurface:"
+ selector/sender 1 swap execute( x x x -- )
- self "backingScaleFactor" [
- execute( x x -- x ) dup 1.0 > [
+ self "backingScaleFactor"
+ selector/sender execute( x x -- x )
+ dup 1.0 > [
gl-scale-factor set-global t retina? set-global
] [ drop ] if
- ] when-method
+ ] when
]
! Rendering