Ignore:
Timestamp:
Jun 12, 2006 10:13:31 AM (18 years ago)
Author:
bennylp
Message:

Added mutex protection and option not to delete upstream/downstream port in master_port.c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/clock_thread.c

    r404 r498  
    2020#include <pjmedia/errno.h> 
    2121#include <pj/assert.h> 
     22#include <pj/lock.h> 
    2223#include <pj/os.h> 
    2324#include <pj/pool.h> 
     
    4243    pj_bool_t                running; 
    4344    pj_bool_t                quitting; 
     45    pj_lock_t               *lock; 
    4446}; 
    4547 
     
    8385    clock->quitting = PJ_FALSE; 
    8486     
     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 
    8592    status = pj_thread_create(pool, "clock", &clock_thread, clock, 
    8693                              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    } 
    8998 
    9099 
     
    105114    PJ_ASSERT_RETURN(clock != NULL, PJ_EINVAL); 
    106115 
     116    if (clock->running) 
     117        return PJ_SUCCESS; 
     118 
    107119    status = pj_get_timestamp(&now); 
    108120    if (status != PJ_SUCCESS) 
    109121        return status; 
    110122 
     123    pj_lock_acquire(clock->lock); 
    111124    clock->next_tick.u64 = now.u64 + clock->interval.u64; 
    112125    clock->running = PJ_TRUE; 
     126    pj_lock_release(clock->lock); 
    113127 
    114128    return status; 
     
    206220            continue; 
    207221 
     222        pj_lock_acquire(clock->lock); 
     223 
    208224        /* Call callback, if any */ 
    209225        if (clock->cb) 
     
    216232        clock->next_tick.u64 += clock->interval.u64; 
    217233 
    218  
     234        pj_lock_release(clock->lock); 
    219235    } 
    220236 
     
    239255    } 
    240256 
     257    if (clock->lock) { 
     258        pj_lock_destroy(clock->lock); 
     259        clock->lock = NULL; 
     260    } 
     261 
    241262    return PJ_SUCCESS; 
    242263} 
    243264 
    244265 
    245  
    246  
    247  
Note: See TracChangeset for help on using the changeset viewer.