Как разместить плагин Apple Pitch Shift Audio Unit и тому подобное - PullRequest
4 голосов
/ 06 августа 2011

Как правильно разместить плагин PitchShift Audio Unit в своем собственном окне?

Я занимаюсь разработкой приложения для Mac, на котором установлены подключаемые к Apple плагины Audio Unit.С новым OSX 10.7 Lion некоторые плагины имеют обновленные представления.PitchShift является одним из них.

PitchShift и некоторые другие имеют новые ручки для изменения там параметров.Когда ручка поворачивается с помощью мыши, под ручкой отображается горизонтальная полоса, показывающая значение параметра ручки.

Эта полоса остается на экране после отпускания ручки и даже после закрытия окна.Если я щелкну одну из ручек, тем самым создав мошенническую строку значений, и переместлю окно, в котором находится представление PitchShift, панель останется там, где раньше было окно.И если в этот момент я снова нажму на ручку, появится новая полоса, но обе полосы будут активно обновляться с информацией об изменении значения параметра ручки.Это происходит каждый раз, когда я повторяю этот процесс, когда на экране остается больше полос.

После нескольких раз, когда это происходит, мое приложение завершает работу с неправильным доступом при вызове NSApplicaionMain () в файле main.m.

Я проверил в Logic 9, и там этого не происходит.Панель, кажется, привязана непосредственно к ручке и, таким образом, исчезает сразу после того, как вы отпустите ручку с помощью мыши.

Я установил представление PitchSHift как представление содержимого выделенного NSWindow.

Как логика препятствует этому или просто как я могу это сделать?

Я пытался увидеть, находятся ли значения параметров в столбцах, где подпредставления представления PitchShift, но они, похоже, не являются.

Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: Когда впервые появляется строка значений, я получаю следующий вывод в консоли из моей программы: окружность и линия не пересекаются

Итак, я обнаружил, что он использует core-анимацию CALayers.Проблема сейчас в том, что слои панели значений не являются частью иерархии слоев PitchShiftView.Другими словами, я могу найти все другие слои, которые создают pitchShiftView, но не слои для столбцов значений.Кажется, для начала это может быть целая проблема.

1 Ответ

1 голос
/ 13 августа 2011

Я наконец понял это.Строки значений параметров являются дочерними окнами окна, которому принадлежит представление аудиоустройства.

Чтобы решить эту проблему, я улавливаю события мыши для окна в моем подклассе NSApplication, а затем закрываю дочернее окно(он же строка значений), чтобы они не оставались на экране.

Это не помешало выходу из строя плохого доступа.Теперь я думаю, что это отдельная проблема, которая, похоже, связана только с этими затянувшимися дочерними окнами.

...