---
title: "CMTimebaseAddTimerDispatchSource(_:timerSource:)"
framework: coremedia
role: symbol
role_heading: Function
path: "coremedia/cmtimebaseaddtimerdispatchsource(_:timersource:)"
---

# CMTimebaseAddTimerDispatchSource(_:timerSource:)

Adds the timer dispatch source to the list of timers the timebase manages.

## Declaration

```swift
func CMTimebaseAddTimerDispatchSource(_ timebase: CMTimebase, timerSource: dispatch_source_t) -> OSStatus
```

## Discussion

Discussion You must create the timer source by calling dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, some_dispatch_queue) and associate an event handler with it from dispatch_source_set_event_handler(timerSource, some_handler_block) or dispatch_source_set_event_handler_f(timerSource, some_handler_function). Call dispatch_resume(timerSource) because the system creates dispatch sources in a suspended state. The timebase retains the timer source, and maintains its start time according to the CMTime set using CMTimebaseSetTimerDispatchSourceNextFireTime(_:timerSource:fireTime:flags:). Until the first call to CMTimebaseSetTimerDispatchSourceNextFireTime(_:timerSource:fireTime:flags:), the system sets the start time to DISPATCH_TIME_FOREVER. For more information on dispatch sources, see Dispatch Sources.

## See Also

### Interacting with Timers

- [CMTimebaseAddTimer(_:timer:runloop:)](coremedia/cmtimebaseaddtimer(_:timer:runloop:).md)
- [CMTimebaseRemoveTimer(_:timer:)](coremedia/cmtimebaseremovetimer(_:timer:).md)
- [CMTimebaseRemoveTimerDispatchSource(_:timerSource:)](coremedia/cmtimebaseremovetimerdispatchsource(_:timersource:).md)
- [CMTimebaseSetTimerNextFireTime(_:timer:fireTime:flags:)](coremedia/cmtimebasesettimernextfiretime(_:timer:firetime:flags:).md)
- [CMTimebaseSetTimerToFireImmediately(_:timer:)](coremedia/cmtimebasesettimertofireimmediately(_:timer:).md)
- [CMTimebaseSetTimerDispatchSourceNextFireTime(_:timerSource:fireTime:flags:)](coremedia/cmtimebasesettimerdispatchsourcenextfiretime(_:timersource:firetime:flags:).md)
- [CMTimebaseSetTimerDispatchSourceToFireImmediately(_:timerSource:)](coremedia/cmtimebasesettimerdispatchsourcetofireimmediately(_:timersource:).md)
