@@ -41,20 +41,9 @@ void DrawVisual( VisualPluginData * visualPluginData )
4141{
4242 CGPoint where;
4343
44- #if USE_SUBVIEW
4544 VISUAL_PLATFORM_VIEW drawView = visualPluginData->subview ;
46-
47- if ( drawView == NULL )
48- return ;
49-
50- [[drawView openGLContext ] makeCurrentContext ];
51- #endif
52- if (visualPluginData->pm == NULL ) {
53- initProjectM (visualPluginData);
54-
55- // correctly size it
56- ResizeVisual (visualPluginData);
57- }
45+ if (!visualPluginData->readyToDraw )
46+ return ;
5847
5948 glClearColor ( 0.0 , 0.5 , 0.0 , 0.0 );
6049 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -63,8 +52,8 @@ void DrawVisual( VisualPluginData * visualPluginData )
6352 visualPluginData->pm ->renderFrame ();
6453 // renderProjectMTexture(visualPluginData);
6554
66- [[drawView openGLContext ] flushBuffer ];
67- // glFlush();
55+ // [[drawView openGLContext] flushBuffer];
56+ glFlush ();
6857
6958 return ;
7059
@@ -149,6 +138,7 @@ OSStatus ActivateVisual( VisualPluginData * visualPluginData, VISUAL_PLATFORM_VI
149138 visualPluginData->destView = destView;
150139 visualPluginData->destRect = [destView bounds ];
151140 visualPluginData->destOptions = options;
141+ visualPluginData->readyToDraw = false ;
152142
153143 UpdateInfoTimeOut ( visualPluginData );
154144
@@ -169,7 +159,20 @@ OSStatus ActivateVisual( VisualPluginData * visualPluginData, VISUAL_PLATFORM_VI
169159 status = memFullErr;
170160 }
171161
162+
163+ [[visualPluginData->subview openGLContext ] makeCurrentContext ];
164+
165+
172166#endif
167+ NSLog (@" activate visual" );
168+ if (visualPluginData->pm == NULL ) {
169+ initProjectM (visualPluginData);
170+
171+ // correctly size it
172+ ResizeVisual (visualPluginData);
173+ }
174+
175+ NSLog (@" activated visual" );
173176
174177 return status;
175178}
@@ -203,7 +206,8 @@ OSStatus DeactivateVisual( VisualPluginData * visualPluginData )
203206 visualPluginData->destView = NULL ;
204207 visualPluginData->destRect = CGRectNull;
205208 visualPluginData->drawInfoTimeOut = 0 ;
206-
209+ visualPluginData->readyToDraw = false ;
210+
207211 if (visualPluginData->pm != NULL ) {
208212 delete (visualPluginData->pm );
209213 visualPluginData->pm = NULL ;
@@ -218,10 +222,13 @@ OSStatus DeactivateVisual( VisualPluginData * visualPluginData )
218222//
219223OSStatus ResizeVisual ( VisualPluginData * visualPluginData )
220224{
221- visualPluginData->destRect = [visualPluginData->destView bounds ];
225+ visualPluginData->destRect = [visualPluginData->subview bounds ];
222226
223227 if (visualPluginData->pm != NULL ) {
224228 visualPluginData->pm ->projectM_resetGL (visualPluginData->destRect .size .width , visualPluginData->destRect .size .height );
229+ NSLog (@" resized to %@ %@ " , [NSNumber numberWithDouble: visualPluginData->destRect.size.width], [NSNumber numberWithDouble: visualPluginData->destRect.size.height]);
230+
231+ visualPluginData->readyToDraw = true ;
225232 }
226233
227234 return noErr;
@@ -259,15 +266,27 @@ - (id)initWithFrame:(NSRect)frame
259266 NSOpenGLPFAOpenGLProfile , NSOpenGLProfileVersion3_2Core ,
260267// NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
261268 NSOpenGLPFAColorSize , 24 ,
262- NSOpenGLPFAAlphaSize , 8 ,
263- NSOpenGLPFADoubleBuffer ,
269+ // NSOpenGLPFAAlphaSize , 8 ,
270+ // NSOpenGLPFADoubleBuffer ,
264271 NSOpenGLPFAAccelerated ,
265272 NSOpenGLPFANoRecovery ,
266273 0
267274 };
268275 NSOpenGLPixelFormat *pixelFormat = [[NSOpenGLPixelFormat alloc ] initWithAttributes: pixelFormatAttributes];
276+ if (pixelFormat == nil )
277+ {
278+ NSLog (@" Unable to create pixel format." );
279+ return self;
280+ }
269281 self = [super initWithFrame: frame pixelFormat: pixelFormat];
270-
282+ if (self == nil )
283+ {
284+ NSLog (@" Unable to create an OpenGL context." );
285+ return self;
286+ }
287+
288+ NSLog (@" super initWithFrame called" );
289+
271290 return self;
272291}
273292
@@ -383,7 +402,7 @@ void GetVisualName( ITUniStr255 name )
383402//
384403OptionBits GetVisualOptions ( void )
385404{
386- OptionBits options = (kVisualSupportsMuxedGraphics | kVisualWantsIdleMessages );
405+ OptionBits options = (kVisualUsesOnly3D | kVisualWantsIdleMessages );
387406
388407#if USE_SUBVIEW
389408 options |= kVisualUsesSubview ;
0 commit comments