2 Replies
      Latest reply on Mar 18, 2019 3:59 AM by lsoltic
      lsoltic Level 1 Level 1 (0 points)



        I am maintaining a legacy application and we have an issue when migrating from 10.13 SDK to 10.14 SDK.

        The failing code is trying to open a NSWindow modally. This NSWindow contains a NSOpenGLView. Hidden part of the call stack is just internal C++ code, nothing related to Cocoa. As you can see at the top of the stack, a NSException gets thrown and contains this message: "The window has been marked as needing another Display Window pass, but it has already had more Display Window passes than there are views in the window."


        Callstack: https://cl.ly/8399f31a5ee8


        Only changing back to 10.13 SDK makes this issue go away. After reading 10.14 SDK release notes, I've the impression that this comes from the changes in Cocoa layer backing. This is described starting from slide 109 of https://developer.apple.com/videos/play/wwdc2018/209/

        Unfortunately, slide 123 says that:

        Implementation details for NSOpenGL are different

        OpenGL is deprecated
        Use MTKView


        So I don't have any clue about what is the recommended behavior in my case. I'm not in a drawRect call and I disabled all the parts of the code that I think could trigger -[NSView/NSWindow display] calls but I still get the exception, so I don't really know what to do. Right now removing the NSOpenGLView is not an option, and doing so doesn't guarantee that the exception would go away.


        In the time being I use 10.13 SDK with Xcode 10 but if you know how it could be fixed and to allow me to use 10.14 SDK, I'm interested!


        Best regards,