Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
Clippings/CreateMovie.c/AsyncMovieLoading.txt
// Handle asynchronous movie loading here. We use the new |
// GetMovieLoadState function to determine the load state |
// of the movie. |
do |
{ |
long newLoadState; |
// Get new load state to see if there was a change in |
// state. |
newLoadState = GetMovieLoadState(theMovie); |
if (newLoadState != loadState) |
{ |
loadState = newLoadState; |
if (loadState < 0) |
{ |
// failed to load the movie - this will cause |
// us to drop out of this loop and report an |
// error |
} |
if (loadState < kMovieLoadStatePlayable) |
{ |
// we need to keep tasking the movie so it gets |
// time to load |
MoviesTask(theMovie, 0); |
} |
if (loadState < kMovieLoadStateComplete) |
{ |
// we just became playable |
} |
if (loadState >= kMovieLoadStateComplete) |
{ |
// now we know all media data is available |
// this will drop us out of this loop so we |
// can display the movie |
} |
} |
} |
while ((loadState > kMovieLoadStateError) && (loadState < kMovieLoadStateComplete)); |
CheckError(err, "NewMovieFromDataRef error"); |
// dispose of our data reference handle since it is no longer needed |
DisposeHandle(dataRef); |
result = GetMovieStatus (theMovie, &firstProblemTrack); |
// if GetMovieLoadState from above returned kMovieLoadStateError, and |
// GetMovieStatus returns nil for the firstProblemTrack parameter we |
// know an error occurred |
if ((loadState == kMovieLoadStateError) && (firstProblemTrack == nil)) |
{ |
CheckError(-1, "NewMovieFromDataRef error"); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14