Old/bad(?) NSView while resizing a nested plug in's editor


#1

I have an Audio Unit plugin with no editor that loads a VST plugin and returns its editor to the DAW (in createEditor).

When I try to resize this editor, my plugin crashes at juce_VST_Wrapper.mm::setNativeHostWindowSize:

if (NSView* hostView = (NSView*) window)
{
    const int dx = newWidth  - component->getWidth();
    const int dy = newHeight - component->getHeight();

    NSRect r = [hostView frame]; - CRASHES HERE
    r.size.width += dx;
    r.size.height += dy;
    r.origin.y -= dy;
    [hostView setFrame: r];
}

From what I can see, the window NSView* first receives its value during the first call to createEditor, in the following line of juce_VST_Wrapper.cpp (ptr is the pointer to that NSView*):

hostWindow = attachComponentToWindowRef (editorComp, ptr, useNSView);

But after a while, during startup, the timerCallback of AutoResizingNSViewComponentWithParent in juce_audio_processors.cpp is called, changing it:

void timerCallback() override
{
    if (NSView* child = getChildView())
    {
        stopTimer();
        setView (child);
    }
}

But I can't see the hostWindow in VST_Wraper getting updated. Could this be the reason? 

I'm really grasping at straws here, any help will be greatly appreciated.

Using OS X 10.9 / XCode 5.


#2

Fixed yesterday.


#3

Huh. I'm just pulling the latest tip as we 'speak'. Will report soon.


#4

Yup, fixed.

Thanks!