Changeset 498 for pjproject/trunk/pjmedia/src/pjmedia/clock_thread.c
- Timestamp:
- Jun 12, 2006 10:13:31 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/clock_thread.c
r404 r498 20 20 #include <pjmedia/errno.h> 21 21 #include <pj/assert.h> 22 #include <pj/lock.h> 22 23 #include <pj/os.h> 23 24 #include <pj/pool.h> … … 42 43 pj_bool_t running; 43 44 pj_bool_t quitting; 45 pj_lock_t *lock; 44 46 }; 45 47 … … 83 85 clock->quitting = PJ_FALSE; 84 86 87 /* I don't think we need a mutex, so we'll use null. */ 88 status = pj_lock_create_null_mutex(pool, "clock", &clock->lock); 89 if (status != PJ_SUCCESS) 90 return status; 91 85 92 status = pj_thread_create(pool, "clock", &clock_thread, clock, 86 93 0, 0, &clock->thread); 87 if (status != PJ_SUCCESS) 88 return status; 94 if (status != PJ_SUCCESS) { 95 pj_lock_destroy(clock->lock); 96 return status; 97 } 89 98 90 99 … … 105 114 PJ_ASSERT_RETURN(clock != NULL, PJ_EINVAL); 106 115 116 if (clock->running) 117 return PJ_SUCCESS; 118 107 119 status = pj_get_timestamp(&now); 108 120 if (status != PJ_SUCCESS) 109 121 return status; 110 122 123 pj_lock_acquire(clock->lock); 111 124 clock->next_tick.u64 = now.u64 + clock->interval.u64; 112 125 clock->running = PJ_TRUE; 126 pj_lock_release(clock->lock); 113 127 114 128 return status; … … 206 220 continue; 207 221 222 pj_lock_acquire(clock->lock); 223 208 224 /* Call callback, if any */ 209 225 if (clock->cb) … … 216 232 clock->next_tick.u64 += clock->interval.u64; 217 233 218 234 pj_lock_release(clock->lock); 219 235 } 220 236 … … 239 255 } 240 256 257 if (clock->lock) { 258 pj_lock_destroy(clock->lock); 259 clock->lock = NULL; 260 } 261 241 262 return PJ_SUCCESS; 242 263 } 243 264 244 265 245 246 247
Note: See TracChangeset
for help on using the changeset viewer.