CALayer causing deadlock in ZoomSDKNormalVideoElement

Description
On macOS 10.13 and below NSOpenGLViews deadlock when they have a layer attached to them.
You can see other people have reported this generic error here https://openradar.appspot.com/37064579.

ZoomSDKNormalVideoElement makes use of the NSOpenGLView and thus deadlocks when you turn on layers. You can reproduce this in the demo if you add a CALayer to the parent view that are renders the video stream.

One solution is to migrate to metal or give developers better hooks into the rendering layer.

Which version?
4.6.21666.0427
Xcode 10.3

To Reproduce(If applicable)
Steps to reproduce the behavior:

  1. In the macos sample demo turn on a CALayer on the parent view that renders ZoomSDKNormalVideoElement. Do this by doing view.wantsLayer = YES;
  2. Join a call with multiple clients so that you are rendering multiple steams.
  3. It should deadlock within 5seconds.
1 Like

Hi @timazed,

Thanks for the post. We are able to identify an issue with your post and we will fix it in the next releases.

Thanks!

1 Like

Hi @Carson_Chen,

Any progress on this? I’m still seeing random dead locks when rendering video streams with the latest SDK and even on the latest version of macOS. Even using the demo app I managed to deadlocked it a few times even without using a CALayer.

Is there any chance I could get access to the raw data APIs? That way I could render the video using metal. I would be happy to contribute the code back to zoom and that way it could be added to the SDK after. Or if there was a way to opensource parts of the SDK that aren’t zoom’s proprietary technology. That way I could contributed fixes. I would love to help you guys out but the completely closed source nature of the SDK makes it impossible.

This issue is making it hard for us to build a stable product on top of zoom which is really unfortunate.

Cheers,
Tim

1 Like

Hi Tim,

Thanks for the follow up. This issue was identified after the latest release(v5.0.24433.0616) so the fix has not been deployed yet since the next release is not yet released. I will follow up here once I have the ETA for the next release.

Thanks for the kindness. I will forward this to the engineering team and the product for further consideration. And regarding the issue you are facing right now, I will also try to communicate with the engineering team and see if there is anything we could do.

Thanks!

2 Likes