@@ -87,7 +87,7 @@ typedef struct _cups_dnssd_device_s // Enumerated device
8787typedef struct _cups_dnssd_resdata_s // Data for resolving URI
8888{
8989 int * cancel ; // Pointer to "cancel" variable
90- struct timeval end_time ; // Ending time
90+ double end_time ; // Ending time
9191} _cups_dnssd_resdata_t ;
9292
9393typedef struct _cups_getdata_s
@@ -129,7 +129,7 @@ static void cups_dest_query_cb(cups_dnssd_query_t *query, void *cb_data, cups_d
129129static const char * cups_dest_resolve (cups_dest_t * dest , const char * uri , int msec , int * cancel , cups_dest_cb_t cb , void * user_data );
130130static bool cups_dest_resolve_cb (void * context );
131131static void cups_dnssd_unquote (char * dst , const char * src , size_t dstsize );
132- static int cups_elapsed (struct timeval * t );
132+ static int cups_elapsed (double * t );
133133static bool cups_enum_dests (http_t * http , unsigned flags , int msec , int * cancel , cups_ptype_t type , cups_ptype_t mask , cups_dest_cb_t cb , void * user_data );
134134static size_t cups_find_dest (const char * name , const char * instance , size_t num_dests , cups_dest_t * dests , size_t prev , int * rdiff );
135135static bool cups_get_cb (_cups_getdata_t * data , unsigned flags , cups_dest_t * dest );
@@ -2517,23 +2517,12 @@ cups_dest_resolve(
25172517
25182518
25192519 // Resolve the URI...
2520- resolve .cancel = cancel ;
2521- gettimeofday ( & resolve .end_time , NULL );
2520+ resolve .cancel = cancel ;
2521+ resolve .end_time = cupsGetClock ( );
25222522 if (msec > 0 )
2523- {
2524- resolve .end_time .tv_sec += msec / 1000 ;
2525- resolve .end_time .tv_usec += (msec % 1000 ) * 1000 ;
2526-
2527- while (resolve .end_time .tv_usec >= 1000000 )
2528- {
2529- resolve .end_time .tv_sec ++ ;
2530- resolve .end_time .tv_usec -= 1000000 ;
2531- }
2532- }
2523+ resolve .end_time += 0.001 * msec ;
25332524 else
2534- {
2535- resolve .end_time .tv_sec += 75 ;
2536- }
2525+ resolve .end_time += 75 ;
25372526
25382527 if (cb )
25392528 (* cb )(user_data , CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_RESOLVING , dest );
@@ -2564,7 +2553,7 @@ cups_dest_resolve_cb(void *context) // I - Resolve data
25642553{
25652554 _cups_dnssd_resdata_t * resolve = (_cups_dnssd_resdata_t * )context ;
25662555 // Resolve data
2567- struct timeval curtime ; // Current time
2556+ double curtime ; // Current time
25682557
25692558
25702559 // If the cancel variable is set, return immediately.
@@ -2575,11 +2564,11 @@ cups_dest_resolve_cb(void *context) // I - Resolve data
25752564 }
25762565
25772566 // Otherwise check the end time...
2578- gettimeofday ( & curtime , NULL );
2567+ curtime = cupsGetClock ( );
25792568
2580- DEBUG_printf ("4cups_dest_resolve_cb: curtime=%d.%06d , end_time=%d.%06d " , ( int ) curtime . tv_sec , ( int ) curtime . tv_usec , ( int ) resolve -> end_time . tv_sec , ( int ) resolve -> end_time . tv_usec );
2569+ DEBUG_printf ("4cups_dest_resolve_cb: curtime=%.6f , end_time=%6f " , curtime , resolve -> end_time );
25812570
2582- return (curtime . tv_sec < resolve -> end_time . tv_sec || ( curtime . tv_sec == resolve -> end_time . tv_sec && curtime . tv_usec < resolve -> end_time . tv_usec ) );
2571+ return (curtime < resolve -> end_time );
25832572}
25842573
25852574
@@ -2625,17 +2614,15 @@ cups_dnssd_unquote(char *dst, // I - Destination buffer
26252614//
26262615
26272616static int // O - Elapsed time in milliseconds
2628- cups_elapsed (struct timeval * t ) // IO - Previous time
2617+ cups_elapsed (double * t ) // IO - Previous time
26292618{
2630- int msecs ; // Milliseconds
2631- struct timeval nt ; // New time
2632-
2633-
2634- gettimeofday (& nt , NULL );
2619+ int msecs ; // Milliseconds
2620+ double nt ; // New time
26352621
2636- msecs = (int )(1000 * (nt .tv_sec - t -> tv_sec ) + (nt .tv_usec - t -> tv_usec ) / 1000 );
26372622
2638- * t = nt ;
2623+ nt = cupsGetClock ();
2624+ msecs = (int )(1000.0 * (nt - * t ));
2625+ * t = nt ;
26392626
26402627 return (msecs );
26412628}
@@ -2667,7 +2654,7 @@ cups_enum_dests(
26672654 size_t count , // Number of queries started
26682655 completed ; // Number of completed queries
26692656 int remaining ; // Remainder of timeout
2670- struct timeval curtime ; // Current time
2657+ double curtime ; // Current time
26712658 _cups_dnssd_data_t data ; // Data for callback
26722659 _cups_dnssd_device_t * device ; // Current device
26732660 cups_dnssd_t * dnssd = NULL ; // DNS-SD context
@@ -2900,7 +2887,7 @@ cups_enum_dests(
29002887 else
29012888 remaining = msec ;
29022889
2903- gettimeofday ( & curtime , NULL );
2890+ curtime = cupsGetClock ( );
29042891
29052892 while (remaining > 0 && (!cancel || !* cancel ))
29062893 {
0 commit comments