Changeset 60 for trunk/Cocoa/Pester/Source/NJRQTMediaPopUpButton.m
- Timestamp:
- 01/05/03 23:02:48 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cocoa/Pester/Source/NJRQTMediaPopUpButton.m
r53 r60 11 11 #import "NSMovie-NJRExtensions.h" 12 12 #import "NSImage-NJRExtensions.h" 13 #import <QuickTime/Movies.h> 13 14 14 15 // XXX workaround for SoundFileManager log message in 10.2.3 and earlier … … 275 276 } 276 277 278 void 279 MovieStoppedCB(QTCallBack cb, long refCon) 280 { 281 NSMovieView *preview = (NSMovieView *)refCon; 282 // if we donÕt do this after the runloop has finished, then we crash in MCIdle because itÕs expecting a movie and doesnÕt have one any more 283 [preview performSelector: @selector(setMovie:) withObject: nil afterDelay: 0]; // otherwise we get an extra runloop timer which uses a lot of CPU from +[NSMovieView _idleMovies] 284 DisposeCallBack(cb); 285 } 286 277 287 - (BOOL)_validateWithPreview:(BOOL)doPreview; 278 288 { … … 285 295 NSMovie *movie = [[NSMovie alloc] initWithURL: [NSURL fileURLWithPath: [selectedAlias fullPath]] byReference: YES]; 286 296 movieCanRepeat = ![movie isStatic]; 287 if ([movie hasAudio]) 288 [preview setMovie: movie];289 else {297 if ([movie hasAudio]) { 298 [preview setMovie: doPreview ? movie : nil]; 299 } else { 290 300 [preview setMovie: nil]; 291 301 if (movie == nil) { … … 301 311 } 302 312 } 313 if (doPreview) { 314 Movie qtMovie = [movie QTMovie]; 315 QTCallBack cbStop = NewCallBack(GetMovieTimeBase(qtMovie), callBackAtExtremes); 316 QTCallBackUPP cbStopUPP = NewQTCallBackUPP(MovieStoppedCB); 317 OSErr err = CallMeWhen(cbStop, cbStopUPP, (long)preview, triggerAtStop, 0, 0); 318 if (err != noErr) { 319 NSLog(@"CanÕt register QuickTime stop timebase callback for preview: %ld", err); 320 DisposeCallBack(cbStop); 321 } 322 [preview start: self]; 323 } 303 324 [movie release]; 304 if (doPreview) [preview start: self];305 325 } 306 326 [[NSNotificationCenter defaultCenter] postNotificationName: NJRQTMediaPopUpButtonMovieChangedNotification object: self]; … … 313 333 { 314 334 [preview stop: self]; 335 [preview setMovie: nil]; // otherwise we get an extra runloop timer which uses a lot of CPU from +[NSMovieView _idleMovies] 315 336 } 316 337
Note:
See TracChangeset
for help on using the changeset viewer.