servo / core-foundation-rs

Rust bindings to Core Foundation and other low level libraries on Mac OS X and iOS
Other
1.01k stars 222 forks source link

Additional PRs to core-foundation-rs #462

Open xanathar opened 3 years ago

xanathar commented 3 years ago

Hi, I'm the author of https://github.com/servo/core-foundation-rs/pull/459 and https://github.com/servo/core-foundation-rs/pull/460 (which, incidentally, are blocked because the CI timed out - my guess is that it timed out independently of the PRs).

I've authored three further wrappers you might be interested into, but, given that they have a scope which is a bit broader than what's in the repo now and there are some caveats (additional dependencies or undocumented APIs), I'm asking if they are welcome or not before spending time polishing them for PR.

CGDisplayStream Both sys and rusty wrappers around the CGDisplayStream family of APIs which allow the display contents to be streamed to an IOSurface at high speed / low cpu usage. These are documented APIs, and I think they can be of interest, but they require a couple of dependencies, as it's a CG API that directly refers IOSurface, plus it uses objective-c blocks (and so needs block crate ).

CGS Display calls These are wrappers around Display calls starting with "CGS"; they are undocumented API calls which are generally useful to manipulate displays on MacOS. Examples are enumerating all the displays, or getting access to video modes which are not exposed to the UI. There are both the sys/ffi wrappers and the "rusty" ones, but the calls are, again, not documented by Apple.

CGVirtualDisplay Again, a wrapper over undocumented APIs which allow to create virtual displays on MacOS; I think they are the APIs Apple uses to support Sidecar. Controversy here is the undocumented status.

Let me know if you are interested in a PR for any subset of them, and I'll open those.

jrmuizel commented 3 years ago

I think we're interested in all of them. It might be worth putting undocumented APIs in a separate crate like 'core-graphics-private' or something like that.

EpicCodeWizard commented 8 months ago

Hello, I was just wondering if the PRs ended up getting merged for CGVirtualDisplay. I'm making a cross-platform Rust app that allows users to create and manage virtual displays easily - I have the Windows and Linux parts figured out, but I couldn't find any API for CGVirtualDisplay. Please let me know how I can use the CGVirtualDisplay APIs as mentioned above.