]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
timer mojo (cont)
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 7 Feb 2007 19:18:15 +0000 (19:18 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 7 Feb 2007 19:18:15 +0000 (19:18 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4151 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_core.h
src/include/switch_module_interfaces.h
src/mod/timers/mod_softtimer/mod_softtimer.c
src/switch_core.c
src/switch_rtp.c

index da673465ac9a8705213b072975513c4bb7ec34b0..826b88ebd1174208ff8aed5ca9a043775671818c 100644 (file)
@@ -905,10 +905,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_timer_step(switch_timer_t *timer);
 /*! 
   \brief Check if the current step has been exceeded
   \param timer the timer to wait on
-  \param diff the remaining number of ms
   \return the newest sample count
 */
-SWITCH_DECLARE(switch_status_t) switch_core_timer_check(switch_timer_t *timer, uint32_t *diff);
+SWITCH_DECLARE(switch_status_t) switch_core_timer_check(switch_timer_t *timer);
 
 /*! 
   \brief Destroy an allocated timer
index 37bc6497eb2b893d5fc12505f85e6022f96adae5..e8abf5efcf2dd63e5f35706f9ee7f0082fca4c12 100644 (file)
@@ -245,7 +245,7 @@ struct switch_timer_interface {
        /*! function to step the timer one step */
        switch_status_t (*timer_step)(switch_timer_t *);
        /*! function to check if the current step has expired */
-       switch_status_t (*timer_check)(switch_timer_t *, uint32_t *);
+       switch_status_t (*timer_check)(switch_timer_t *);
        /*! function to deallocate the timer */
        switch_status_t (*timer_destroy)(switch_timer_t *);
        const struct switch_timer_interface *next;
index 10f6bb07411cc37ab3f55bec55bd2de4d50b30f9..14e238ff867f6f4134a93b2ea0a6123a1f019f71 100644 (file)
@@ -78,11 +78,8 @@ static inline switch_status_t timer_step(switch_timer_t *timer)
 {
        timer_private_t *private_info = timer->private_info;
 
-    while(private_info->reference <= TIMER_MATRIX[timer->interval].tick) {
-        private_info->reference += timer->interval;
-    }
-    
-       return SWITCH_STATUS_SUCCESS;
+    private_info->reference += timer->interval;
+    return SWITCH_STATUS_SUCCESS;
 }
 
 
@@ -93,41 +90,31 @@ static inline switch_status_t timer_next(switch_timer_t *timer)
        timer_step(timer);
        while (TIMER_MATRIX[timer->interval].tick < private_info->reference) {
         uint64_t diff;
-
-        if ((diff = (private_info->reference - TIMER_MATRIX[timer->interval].tick))) {
-            if (diff == timer->interval) {
-                switch_yield(diff * 500);
-            } else {
-                switch_yield(1000);
-            }
-        } else {
-            break;
-        }
+        switch_yield(timer->interval * 500);
        }
        timer->samplecount += timer->samples;
        return SWITCH_STATUS_SUCCESS;
 }
 
-static inline switch_status_t timer_check(switch_timer_t *timer, uint32_t *diff)
+static inline switch_status_t timer_check(switch_timer_t *timer)
 
 {
        timer_private_t *private_info = timer->private_info;
        switch_status_t status = SWITCH_STATUS_SUCCESS;
+    uint64_t diff;
 
        if (TIMER_MATRIX[timer->interval].tick < private_info->reference) {
-        uint64_t _diff = private_info->reference - TIMER_MATRIX[timer->interval].tick;
-        *diff = (uint32_t) _diff;
+        diff = private_info->reference - TIMER_MATRIX[timer->interval].tick;
        } else {
-        *diff = 0;
+        diff = 0;
        }
 
-    if (*diff) {
+    if (diff) {
         status = SWITCH_STATUS_FALSE;
     } else {
         timer_step(timer);
     }
 
-
        return status;
 }
 
index 96661f977cc4c515683699ff015927336aa3213b..19e8b6debdfc028b7438110fb464a01c559030a0 100644 (file)
@@ -1321,14 +1321,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_timer_step(switch_timer_t *timer)
        return timer->timer_interface->timer_step(timer);
 }
 
-SWITCH_DECLARE(switch_status_t) switch_core_timer_check(switch_timer_t *timer, uint32_t *diff)
+SWITCH_DECLARE(switch_status_t) switch_core_timer_check(switch_timer_t *timer)
 {
        if (!timer->timer_interface) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Timer is not initilized!\n");
                return SWITCH_STATUS_GENERR;
        }
 
-       return timer->timer_interface->timer_check(timer, diff);
+       return timer->timer_interface->timer_check(timer);
 }
 
 
index 81a14f0b6fa34db1e484cc411863443a189efa40..23496bb8ab63531eb95431727bdf4fc1c0bba1de 100644 (file)
@@ -711,7 +711,6 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
        switch_size_t bytes = 0;
        switch_status_t status;
        uint8_t check = 1;
-    uint32_t diff = 0;
 
        if (!rtp_session->timer.interval) {
                rtp_session->last_time = switch_time_now();
@@ -758,7 +757,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                } 
 
                if (rtp_session->timer.interval) {
-                       check = (uint8_t)(switch_core_timer_check(&rtp_session->timer, &diff) == SWITCH_STATUS_SUCCESS);
+                       check = (uint8_t)(switch_core_timer_check(&rtp_session->timer) == SWITCH_STATUS_SUCCESS);
                }
 
                if (check) {
@@ -781,7 +780,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                
                if (status == SWITCH_STATUS_BREAK || bytes == 0) {
                        if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_DATAWAIT)) {
-                               switch_yield(diff * 500);
+                               switch_yield((rtp_session->ms_per_packet / 1000) * 750);
                                continue;
                        }
                        return 0;