NSOpenGLView в NSSplitView - PullRequest
       32

NSOpenGLView в NSSplitView

4 голосов
/ 22 апреля 2010

Когда я помещаю NSOpenglView в NSSplitView, возникает проблема при перетаскивании сплиттера. OpenGLView и SplitView изменяют размер асинхронно. Я нашел решение в ветке списка рассылки Apple http://developer.apple.com/mac/library/samplecode/GLChildWindowDemo/Introduction/Intro.html

и я нашел решение с некоторыми угольными звонками. но теперь я получаю ошибку ссылки (только в режиме релиза).

Итак, у меня два вопроса - есть ли какой-нибудь какао-способ исправить сплиттер - проблема с gl? если нет - как я могу исправить ошибки углеродного линкера в режиме релиза?

1 Ответ

4 голосов
/ 22 апреля 2010

Я нашел ответ.

правильный способ - реализовать эти методы в вашем MYWindow: NSWindow

BOOL needsEnableUpdate;

-(void)disableUpdatesUntilFlush
{
    if(!needsEnableUpdate)
        NSDisableScreenUpdates();
    needsEnableUpdate = YES;
}

-(void)flushWindow
{
    [super flushWindow];
    if(needsEnableUpdate)
    {
        needsEnableUpdate = NO;
        NSEnableScreenUpdates();
    }
}

и в делегате NSSplitterView реализовать

#pragma mark NSSplitView Delegate
-(void)splitViewWillResizeSubviews:(NSNotification *)notification
{
    [window disableUpdatesUntilFlush];
}

Моя проблема заключалась в том, что я пытался использовать углеродные звонки:

DisableScreenUpdates();
EnableScreenUpdates();

вместо какао:

NSDisableScreenUpdates();
NSEnableScreenUpdates();
...