VST Resizing issues in Magix Samplitude & Sequoia


#1

There seems to be another host-specific glitch in the VST resizing code.

Resizing in Samplitude and Sequoia only works well while resizing with the ResizableCornerComponent,

But if you change the size by calling your PluginEditor’s setSize() method, sometimes the plugin-editor does not paint the whole content area of the window (or it stays completely white). The host window is always properly resized though, but it seems the plugin editor itself isn’t.

We could reproduce it in the free Samplitude trial version (from http://www.magix.com/gb/free-download/) by adding an additional combobox to the demo plugin (with “600x100” and “100x300” items) and this ComboBox::Listener implementation

void JuceDemoPluginAudioProcessorEditor::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
{
    if (comboBoxThatHasChanged == &resizeCombo)
    {
        String itemText = resizeCombo.getText();
        int width = itemText.upToFirstOccurrenceOf("x", false, true).getIntValue();
        int height = itemText.fromFirstOccurrenceOf("x", false, true).getIntValue();

        setSize(width, height);
    }
}

Anyone has experience with the VST wrapper got an idea what’s going wrong? Sequoia is often used by German broadcasters, so we’d like to properly support it.


#2

I just noticed that the same bug also occurs in Adobe Audition (with PPMulator and also with the modified plugin from above).

Resizing works fine as long as you do it with the ResizableCornerComponent, but if you explicitly call ::setSize() on the editor, the host window will change its size, put the content is not properly updated until you close the editor window.

I debugged into the resizing related methods in the VST wrapper, but couldn’t spot any difference between those two cases or the difference to the same actions in Ableton Live.

Any ideas why the ResizableCornerCOmponent resizes the editor in a way that also works in Audition & Samplitude? (or what else can be done to further debug or hopefully fix this?)


#3

Just a wild guess, but could it be because the ResizableCornerComponent generally results in multiple set sizes as opposed to a single call to setSize?


#4

Did you try an explicit call to repaint()? That might be getting done somewhere in the corner resizer code.


#5

call ::repaint() on the PluginEditor? just tried that and it doesn’t make a difference (in Adobe Audition).


#6

Hmm. Not sure then. It might just be like Andrew J’s comment: it takes a couple of resizes for the host to take notice and update.