Commit Graph

78 Commits

Author SHA1 Message Date
Matthew Flatt
3f825b8d20 ffi/com: fix reference counting
Don't AddRef() on "in" arguments, do AddRef() on "out"
or "in-out" arguments.
2012-09-01 09:48:35 -06:00
Matthew Flatt
f1ff9c6059 ffi/com: fix unmarshal of by-ref results 2012-09-01 09:48:35 -06:00
Matthew Flatt
eb7fd51d02 ffi/com: add `any ...' support for method arguments
Also allow `?' for the length of an array and suport VT_SAFEARRAY
arguments (mostly the same as VT_ARRAY).
2012-09-01 09:48:35 -06:00
Matthew Flatt
3a2b562ff4 remove debugging printf 2012-09-01 09:48:34 -06:00
Matthew Flatt
d11e58b639 ffi/unsafe/atomic: add `in-atomic-mode?'
The new function can be useful for debugging, at least.
2012-08-31 07:33:08 -06:00
Matthew Flatt
d953bc27ba fix `ffi/unsafe/nsalloc'
Using `call-as-atomic' isn't right, because that allows an escape
via `call-as-nonatomic'. Assuming that `call-as-nonatomic' isn't
used, it seems like `call-as-atomic' should be ok, anyway, but
somehow its leads to unbalanced `end-atomic' calls.
2012-08-28 18:45:55 -06:00
Matthew Flatt
85b99de7b1 ffi/unsafe/objc: more support for loading in unsupported contexts 2012-08-27 19:47:44 -06:00
Matthew Flatt
7b49ad088a ffi/unsafe/objc: `objc_lookUpClass' produces #f when unavailable
This change allows `ffi/unsafe/nsstring', for example, to at least load
on all platforms.
2012-08-27 10:29:55 -06:00
Matthew Flatt
a523270025 ffi/com: repair for DCOM instance creation 2012-08-27 08:57:01 -06:00
Matthew Flatt
088d1dadb4 add ffi/unsafe/nsalloc' and ffi/unsafe/nsstring' 2012-08-24 15:48:58 -06:00
Matthew Flatt
0452bd791d bytecode optimizer improvement
Treat unsafe functional operations (which never raise an
exception) as omitable, which means that simple `let-values'
combinations can be split into `let' bindings, etc.
2012-08-16 13:11:41 -06:00
Matthew Flatt
bb3545ddf7 ffi/unsafe/custodian: #:atexit?' -> #:at-exit?' 2012-08-12 20:25:47 -06:00
Matthew Flatt
4e5b46405d ffi/com: release COM objects at exit
Uses the new `ffi/unsafe/custodian' library.
2012-08-12 20:17:29 -06:00
Matthew Flatt
42ef79c2ad add `ffi/unsafe/custodian' 2012-08-12 20:17:29 -06:00
Matthew Flatt
66eaa191e5 ffi/com: fix interaction with `racket/gui'
... and other things that use the Windows message
queue by not providing GCable arguments to
IDispatch::Invoke().

Merge to v5.3
2012-08-02 19:20:36 -06:00
Matthew Flatt
38ce4997a9 ffi/com: fix potential interaction of finalization and custodians
Includes new `#:manage?' optional argument to `make-com-object'
and better management of internally created objects.

Merge to v5.3
2012-08-02 16:29:03 -06:00
Matthew Flatt
572252daec ffi/com: thread safety
Protect internal data structures via atomic mode.

Merge to v5.3
2012-08-02 16:29:02 -06:00
Matthew Flatt
286efface0 ffi/com: adjust order in object release
Release type descriptors before type infos, and release type
infos before objects. (This reordering shouldn't matter if
referencing counting does its usual job, but maybe it's better
to use the obvious order.)

Merge to v5.3
2012-08-02 08:01:00 -06:00
Matthew Flatt
38167dd4fa ffi/com: remove stray quote
Merge to v5.3
2012-08-01 09:34:11 -06:00
Matthew Flatt
9b1db14328 ffi/com: fix clean-up of type descriptors
Merge to v5.3
2012-07-29 09:46:30 -06:00
Matthew Flatt
cd90510f07 ffi/com: AddRef on IUnknown arguments to COM methods
Merge to v5.3
2012-07-23 14:35:27 -05:00
Matthew Flatt
94498465e6 ffi/com: fix another instance of the `cast' bug
Overlooked it during the previous repair; this repair merges
the two formerly broken sites.
2012-07-19 20:20:33 -05:00
Matthew Flatt
c86ee5b6e2 ffi/com: fix an internal cast
Merge to v5.3
2012-07-19 19:02:54 -06:00
Matthew Flatt
1e115e2963 ffi/com: repairs for '(box any) 2012-06-26 11:00:11 -06:00
Matthew Flatt
90b5aad56b ffi/com: fixes for IUnknown and enumeration values 2012-06-25 17:30:03 -06:00
Matthew Flatt
a04ba8aef3 ffi/com: allow a `com-object' as an 'iunknown argument 2012-06-22 09:47:59 +08:00
Matthew Flatt
fbb6a294f3 local-expand' allows a stop list to have only module*'
That is, when the sto plist contains only `module*', core
forms are not implicitly added to the stop list.
2012-06-08 16:08:55 +08:00
Matthew Flatt
09cb2a348f ffi/com: add 'variant type description
Used to prevent extra array dimensions and instead construct nested
arrays.
2012-05-26 06:38:02 -06:00
Matthew Flatt
ffea2b2c02 ffi/unsafe/com: infer 'any type for `com-omit' 2012-04-25 00:11:57 -06:00
Matthew Flatt
38e628be80 ffi/com: add support for type descriptions on values 2012-04-16 08:47:13 -06:00
Matthew Flatt
c695727aec ffi/unsafe/com: fix arrays of 'any 2012-04-11 19:12:32 -06:00
Matthew Flatt
89307edbce ffi/unsafe/com: avoid inclusion of no-error result code in error messages
Merge to 5.3
2012-04-11 17:55:12 -06:00
Matthew Flatt
bcb22a3adb ffi/unsafe/com: repair for optional `any' arguments
Merge to 5.3
2012-04-11 17:49:08 -06:00
Matthew Flatt
e62f812941 ffi/com: fix another GC problem, this time related to custodians 2012-04-04 07:16:50 -06:00
Matthew Flatt
522a92970e ffi/com: fix GC issue related to COM events 2012-04-04 07:00:25 -06:00
Matthew Flatt
89ef600b6e ffi/unsafe/com: com-object->eq?' implies equal?' 2012-04-03 18:36:27 -06:00
Matthew Flatt
cb7200295e ffi/unsafe/com: fix custodian and multi-instance problems 2012-04-02 14:36:23 -06:00
Matthew Flatt
2bf05a8df3 ffi/unsafe/com repairs 2012-04-01 12:58:16 -06:00
Matthew Flatt
11de33d4ff remove MysterX DLL, replace with wrapper around `ffi/com'
The ActiveX part of MysterX is gone. The `ffi/com' re-imeplemtnation
provides only core COM support.

The "mysssink" DLL is still needed, and its source is still
in the tree, but it is downloaded in the same way as other
pre-built DLLs. The DLL no longer needs to be registered with
regsvr32.
2012-02-17 06:37:19 -07:00
Matthew Flatt
b93eaa19f4 ffi/unsafe/alloc: releaser should be able to return a value 2012-02-17 06:36:23 -07:00
Matthew Flatt
084278fabc handle-evt' cannot wrap handle-evt'
The prohbition against `handle-evt' on `handle-evt' is as
document and as originally intended. I'm not sure why it
was allowed.

Existing programs that use `handle-evt' incorrectly
can break. I found and fixed one incorrect use and one
questionable use in the Racket tree (which is a small
minority of the uses of `handle-evt' in the tree).
2012-02-15 18:59:24 -07:00
Matthew Flatt
ff41a896bc add ffi/com', ffi/unsafe/com' 2012-01-10 18:35:32 -07:00
Matthew Flatt
be89a1c1c4 ffi/unsafe/objc: at least load on platforms without libobjc 2011-11-28 13:51:25 -07:00
Matthew Flatt
8bd81f4806 fix ffi retain of callbacks
The FFI's weak table of callback procedures (to map Racket procedures
to FFI callback objects) suffered from the classic key-in-value
problem.

Closes PR 12228, probably

Merge to 5.2
2011-10-09 09:01:15 -06:00
Matthew Flatt
231b352bec fix NSProcessInfo arguments hack
The target of the change is actually `hack-argument-replacement' in
`mred/private/coco/queue'. The replaced method can get called in
a different OS-level thread than the main thread.

Closes PR 12086
2011-09-09 22:27:34 -06:00
Eli Barzilay
3157955d40 ".ss" -> ".rkt" scan done. 2011-07-02 10:37:53 -04:00
Ryan Culpepper
9bc3457bbd renamed ffi/unsafe/security to ffi/file 2011-04-15 14:47:29 -06:00
Ryan Culpepper
a19a0340aa added ffi/unsafe/security 2011-04-07 09:47:20 -06:00
David Van Horn
760a58b65d Fixes more spelling errors. 2011-02-04 19:44:13 -07:00
Matthew Flatt
cbea645284 fix try-atomic bug related to cont-mark-set-first and recent prompt fix 2011-01-20 07:10:05 -07:00