/* Object debug checks for alloc/free paths */ static void setup_object_debug(struct kmem_cache *s, struct page *page, void *object) { if (!(s->flags & (SLAB_STORE_USER|SLAB_RED_ZONE|__OBJECT_POISON))) return; init_object(s, object, SLUB_RED_INACTIVE); init_tracking(s, object); }
void PlaybackEngine::run() { start_lock->unlock(); do { // Wait for current command to finish que->output_lock->lock("PlaybackEngine::run"); wait_render_engine(); // Read the new command que->input_lock->lock("PlaybackEngine::run"); if(done) return; command->copy_from(&que->command); que->command.reset(); que->input_lock->unlock(); //printf("PlaybackEngine::run 1 %d\n", command->command); switch(command->command) { // Parameter change only case COMMAND_NONE: // command->command = last_command; perform_change(); break; case PAUSE: init_cursor(); pause_lock->lock("PlaybackEngine::run"); stop_cursor(); break; case STOP: // No changing break; case CURRENT_FRAME: last_command = command->command; perform_change(); arm_render_engine(); // Dispatch the command start_render_engine(); break; default: last_command = command->command; is_playing_back = 1; if(command->command == SINGLE_FRAME_FWD || command->command == SINGLE_FRAME_REWIND) { command->playbackstart = get_tracking_position(); } perform_change(); arm_render_engine(); // Start tracking after arming so the tracking position doesn't change. // The tracking for a single frame command occurs during PAUSE init_tracking(); // Dispatch the command start_render_engine(); break; } //printf("PlaybackEngine::run 100\n"); }while(!done); }