Bug 25001 - CVDisplayLink is missing from CoreVideo in Xamarin.Mac 1.11.1.201.
Summary: CVDisplayLink is missing from CoreVideo in Xamarin.Mac 1.11.1.201.
Status: RESOLVED FIXED
Alias: None
Product: Xamarin.Mac
Classification: Desktop
Component: Library (Xamarin.Mac.dll) ()
Version: 1.11.0
Hardware: Macintosh Mac OS
: Normal normal
Target Milestone: ---
Assignee: Chris Hamons
URL:
Depends on:
Blocks:
 
Reported: 2014-12-02 12:03 UTC by Brian Berry
Modified: 2014-12-16 12:57 UTC (History)
3 users (show)

Tags:
Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED FIXED

Description Brian Berry 2014-12-02 12:03:49 UTC
Found: The CVDisplayLink class is no longer provided in Xamarin.Mac.

Steps to reproduce:
  * Create a Xamarin.Mac project that employs CoreVideo and CVDisplayLink
    under 1.10.0.18 (the beta channel at the time of this report).
  * Observe that the class reference is valid / builds succeed.
  * Update to 1.11.1.201 (the alpha channel at the time of this report).
  * Observe missing-class syntax highlighting and failed builds.

Expected: CVDisplayLink is still provided, as it is a critical feature
on OSX for various purposes.
Comment 1 Timothy Risi 2014-12-02 15:16:32 UTC
Hi Brian,

I updated to the current Alpha channel (XM 1.11.1.201) and was unable to reproduce the bug.  I tried creating both Classic and Unified projects and adding a "using CoreVideo;" statement, CVDisplayLink was found by intellisense and I was able to successfully build and run a project using CVDisplayLink.

Can you provide a project with a simple test case for the issue?

Thanks
Comment 2 Brian Berry 2014-12-02 15:28:42 UTC
Odd.  Even the assembly browser in XS did not show the class when the alpha channel was installed.   I can toggle back and forth between alpha + beta and see and clear the problem, respectively.  I'll dig a little more and see if I can find any more info.
Comment 3 Brian Berry 2014-12-02 15:58:50 UTC
I did a quick check of the following
    ...under /Library/Frameworks/Xamarin.Mac.framework/
    ...via ILSpy this time:

Versions/1.11.1.201/lib/i386/full/Xamarin.Mac.dll
Versions/1.11.1.201/lib/i386/mobile/Xamarin.Mac.dll
Versions/1.11.1.201/lib/mono/Xamarin.Mac/Xamarin.Mac.dll
Versions/1.11.1.201/lib/reference/full/Xamarin.Mac.dll
Versions/1.11.1.201/lib/reference/mobile/Xamarin.Mac.dll
Versions/1.11.1.201/lib/x86_64/full/Xamarin.Mac.dll
Versions/1.11.1.201/lib/x86_64/mobile/Xamarin.Mac.dll

...no CVDisplayLink apparent in any of those assemblies under the CoreVideo namespace.

CVDisplayLink *does* appear under Versions/1.11.1.201/lib/mono/XamMac.dll
under the MonoMac.CoreVideo namespace, for what it's worth.

After reinstalling the beta channel (1.10.x), a spot check of the x86_64/full assembly
*does* show CVDisplayLink in the assembly under CoreVideo, as expected.

I have no theory for why your local build succeeded, but I'd suggest verifying
what I see in the binaries themselves locally.
Comment 4 Chris Hamons 2014-12-02 16:21:34 UTC
Here's the deal:
  - In unified, we split out all of the OpenGL support into a new assembly, opentk.dll to match iOS.
  - This involved touching a lot of files and projects. Since CVDisplayLink happened to have a method that used OpenGL, it was brought along.
  - Tim's test project happened to have opentk.dll, so he didn't notice.
  - This was a mistake, and will be fixed in the next alpha.
  - You can reference opentk.dll to work around it until it is fixed.
Comment 5 Brian Berry 2014-12-02 16:25:58 UTC
Thanks for the info.  I am specifically not using OpenTK, which matches that explanation.
I'll hang out in beta for now and watch alpha for another version tick.
Appreciate the quick response.
Comment 6 Chris Hamons 2014-12-05 12:03:08 UTC
This is fixed in master / 7176b35 and should make the next alpha update.
Comment 7 Brian Berry 2014-12-15 17:07:08 UTC
Still present in Version: 1.11.3.0 (Business Edition), which hit alpha just a bit ago.
Comment 8 Chris Hamons 2014-12-16 12:57:30 UTC
Sorry for the confusion. I should have been more specific on the rebase notes for 1.11.3.0. It pretty much was only a version bump to fix an issue associated with Unified Full project creation.

We still have it fixed in master, and I hope it will make the next alpha update, which looks early next year. You can work around it if necessary via referencing opentk until the update.